/wp-content/plugins/bbpress/includes/replies/template-tags.php
PHP | 2173 lines | 778 code | 275 blank | 1120 comment | 156 complexity | 39326c306e8c93ee94f079543aa7de47 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0, AGPL-1.0, LGPL-3.0, LGPL-2.1
Large files files are truncated, but you can click here to view the full file
- <?php
- /**
- * bbPress Reply Template Tags
- *
- * @package bbPress
- * @subpackage TemplateTags
- */
- // Exit if accessed directly
- if ( !defined( 'ABSPATH' ) ) exit;
- /** Post Type *****************************************************************/
- /**
- * Return the unique id of the custom post type for replies
- *
- * @since bbPress (r2857)
- *
- * @uses bbp_get_reply_post_type() To get the reply post type
- */
- function bbp_reply_post_type() {
- echo bbp_get_reply_post_type();
- }
- /**
- * Return the unique id of the custom post type for replies
- *
- * @since bbPress (r2857)
- *
- * @uses apply_filters() Calls 'bbp_get_forum_post_type' with the forum
- * post type id
- * @return string The unique reply post type id
- */
- function bbp_get_reply_post_type() {
- return apply_filters( 'bbp_get_reply_post_type', bbpress()->reply_post_type );
- }
- /** Reply Loop Functions ******************************************************/
- /**
- * The main reply loop. WordPress makes this easy for us
- *
- * @since bbPress (r2553)
- *
- * @param mixed $args All the arguments supported by {@link WP_Query}
- * @uses bbp_show_lead_topic() Are we showing the topic as a lead?
- * @uses bbp_get_topic_id() To get the topic id
- * @uses bbp_get_reply_post_type() To get the reply post type
- * @uses bbp_get_topic_post_type() To get the topic post type
- * @uses get_option() To get the replies per page option
- * @uses bbp_get_paged() To get the current page value
- * @uses current_user_can() To check if the current user is capable of editing
- * others' replies
- * @uses WP_Query To make query and get the replies
- * @uses WP_Rewrite::using_permalinks() To check if the blog is using permalinks
- * @uses get_permalink() To get the permalink
- * @uses add_query_arg() To add custom args to the url
- * @uses apply_filters() Calls 'bbp_replies_pagination' with the pagination args
- * @uses paginate_links() To paginate the links
- * @uses apply_filters() Calls 'bbp_has_replies' with
- * bbPres::reply_query::have_posts()
- * and bbPres::reply_query
- * @return object Multidimensional array of reply information
- */
- function bbp_has_replies( $args = '' ) {
- global $wp_rewrite;
- /** Defaults **************************************************************/
- // Other defaults
- $default_reply_search = !empty( $_REQUEST['rs'] ) ? $_REQUEST['rs'] : false;
- $default_post_parent = ( bbp_is_single_topic() ) ? bbp_get_topic_id() : 'any';
- $default_post_type = ( bbp_is_single_topic() && bbp_show_lead_topic() ) ? bbp_get_reply_post_type() : array( bbp_get_topic_post_type(), bbp_get_reply_post_type() );
- // Default query args
- $default = array(
- 'post_type' => $default_post_type, // Only replies
- 'post_parent' => $default_post_parent, // Of this topic
- 'posts_per_page' => bbp_get_replies_per_page(), // This many
- 'paged' => bbp_get_paged(), // On this page
- 'orderby' => 'date', // Sorted by date
- 'order' => 'ASC', // Oldest to newest
- 's' => $default_reply_search, // Maybe search
- );
- // What are the default allowed statuses (based on user caps)
- if ( bbp_get_view_all() ) {
- // Default view=all statuses
- $post_statuses = array(
- bbp_get_public_status_id(),
- bbp_get_closed_status_id(),
- bbp_get_spam_status_id(),
- bbp_get_trash_status_id()
- );
- // Add support for private status
- if ( current_user_can( 'read_private_replies' ) ) {
- $post_statuses[] = bbp_get_private_status_id();
- }
- // Join post statuses together
- $default['post_status'] = join( ',', $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_replies' );
- // Get bbPress
- $bbp = bbpress();
- // Call the query
- $bbp->reply_query = new WP_Query( $r );
- // Add pagination values to query object
- $bbp->reply_query->posts_per_page = $r['posts_per_page'];
- $bbp->reply_query->paged = $r['paged'];
- // Never home, regardless of what parse_query says
- $bbp->reply_query->is_home = false;
- // Reset is_single if single topic
- if ( bbp_is_single_topic() ) {
- $bbp->reply_query->is_single = true;
- }
- // Only add pagination if query returned results
- if ( (int) $bbp->reply_query->found_posts && (int) $bbp->reply_query->posts_per_page ) {
- // If pretty permalinks are enabled, make our pagination pretty
- if ( $wp_rewrite->using_permalinks() ) {
- // User's replies
- if ( bbp_is_single_user_replies() ) {
- $base = bbp_get_user_replies_created_url( bbp_get_displayed_user_id() );
- // Root profile page
- } elseif ( bbp_is_single_user() ) {
- $base = bbp_get_user_profile_url( bbp_get_displayed_user_id() );
- // Page or single post
- } elseif ( is_page() || is_single() ) {
- $base = get_permalink();
- // Single topic
- } else {
- $base = get_permalink( bbp_get_topic_id() );
- }
- $base = trailingslashit( $base ) . user_trailingslashit( $wp_rewrite->pagination_base . '/%#%/' );
- // Unpretty permalinks
- } else {
- $base = add_query_arg( 'paged', '%#%' );
- }
- // Add pagination to query object
- $bbp->reply_query->pagination_links = paginate_links(
- apply_filters( 'bbp_replies_pagination', array(
- 'base' => $base,
- 'format' => '',
- 'total' => ceil( (int) $bbp->reply_query->found_posts / (int) $r['posts_per_page'] ),
- 'current' => (int) $bbp->reply_query->paged,
- 'prev_text' => is_rtl() ? '→' : '←',
- 'next_text' => is_rtl() ? '←' : '→',
- 'mid_size' => 1,
- 'add_args' => ( bbp_get_view_all() ) ? array( 'view' => 'all' ) : false
- ) )
- );
- // Remove first page from pagination
- if ( $wp_rewrite->using_permalinks() ) {
- $bbp->reply_query->pagination_links = str_replace( $wp_rewrite->pagination_base . '/1/', '', $bbp->reply_query->pagination_links );
- } else {
- $bbp->reply_query->pagination_links = str_replace( '&paged=1', '', $bbp->reply_query->pagination_links );
- }
- }
- // Return object
- return apply_filters( 'bbp_has_replies', $bbp->reply_query->have_posts(), $bbp->reply_query );
- }
- /**
- * Whether there are more replies available in the loop
- *
- * @since bbPress (r2553)
- *
- * @uses WP_Query bbPress::reply_query::have_posts() To check if there are more
- * replies available
- * @return object Replies information
- */
- function bbp_replies() {
- // Put into variable to check against next
- $have_posts = bbpress()->reply_query->have_posts();
- // Reset the post data when finished
- if ( empty( $have_posts ) )
- wp_reset_postdata();
- return $have_posts;
- }
- /**
- * Loads up the current reply in the loop
- *
- * @since bbPress (r2553)
- *
- * @uses WP_Query bbPress::reply_query::the_post() To get the current reply
- * @return object Reply information
- */
- function bbp_the_reply() {
- return bbpress()->reply_query->the_post();
- }
- /**
- * Output reply id
- *
- * @since bbPress (r2553)
- *
- * @param $reply_id Optional. Used to check emptiness
- * @uses bbp_get_reply_id() To get the reply id
- */
- function bbp_reply_id( $reply_id = 0 ) {
- echo bbp_get_reply_id( $reply_id );
- }
- /**
- * Return the id of the reply in a replies loop
- *
- * @since bbPress (r2553)
- *
- * @param $reply_id Optional. Used to check emptiness
- * @uses bbPress::reply_query::post::ID To get the reply id
- * @uses bbp_is_reply() To check if the search result is a reply
- * @uses bbp_is_single_reply() To check if it's a reply page
- * @uses bbp_is_reply_edit() To check if it's a reply edit page
- * @uses get_post_field() To get the post's post type
- * @uses WP_Query::post::ID To get the reply id
- * @uses bbp_get_reply_post_type() To get the reply post type
- * @uses apply_filters() Calls 'bbp_get_reply_id' with the reply id and
- * supplied reply id
- * @return int The reply id
- */
- function bbp_get_reply_id( $reply_id = 0 ) {
- global $wp_query;
- $bbp = bbpress();
- // Easy empty checking
- if ( !empty( $reply_id ) && is_numeric( $reply_id ) ) {
- $bbp_reply_id = $reply_id;
- // Currently inside a replies loop
- } elseif ( !empty( $bbp->reply_query->in_the_loop ) && isset( $bbp->reply_query->post->ID ) ) {
- $bbp_reply_id = $bbp->reply_query->post->ID;
- // Currently inside a search loop
- } elseif ( !empty( $bbp->search_query->in_the_loop ) && isset( $bbp->search_query->post->ID ) && bbp_is_reply( $bbp->search_query->post->ID ) ) {
- $bbp_reply_id = $bbp->search_query->post->ID;
- // Currently viewing a forum
- } elseif ( ( bbp_is_single_reply() || bbp_is_reply_edit() ) && !empty( $bbp->current_reply_id ) ) {
- $bbp_reply_id = $bbp->current_reply_id;
- // Currently viewing a reply
- } elseif ( ( bbp_is_single_reply() || bbp_is_reply_edit() ) && isset( $wp_query->post->ID ) ) {
- $bbp_reply_id = $wp_query->post->ID;
- // Fallback
- } else {
- $bbp_reply_id = 0;
- }
- return (int) apply_filters( 'bbp_get_reply_id', $bbp_reply_id, $reply_id );
- }
- /**
- * Gets a reply
- *
- * @since bbPress (r2787)
- *
- * @param int|object $reply reply id or reply object
- * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N. Default = OBJECT
- * @param string $filter Optional Sanitation filter. See {@link sanitize_post()}
- * @uses get_post() To get the reply
- * @uses bbp_get_reply_post_type() To get the reply post type
- * @uses apply_filters() Calls 'bbp_get_reply' with the reply, output type and
- * sanitation filter
- * @return mixed Null if error or reply (in specified form) if success
- */
- function bbp_get_reply( $reply, $output = OBJECT, $filter = 'raw' ) {
- if ( empty( $reply ) || is_numeric( $reply ) )
- $reply = bbp_get_reply_id( $reply );
- $reply = get_post( $reply, OBJECT, $filter );
- if ( empty( $reply ) )
- return $reply;
- if ( $reply->post_type !== bbp_get_reply_post_type() )
- return null;
- if ( $output == OBJECT ) {
- return $reply;
- } elseif ( $output == ARRAY_A ) {
- $_reply = get_object_vars( $reply );
- return $_reply;
- } elseif ( $output == ARRAY_N ) {
- $_reply = array_values( get_object_vars( $reply ) );
- return $_reply;
- }
- return apply_filters( 'bbp_get_reply', $reply, $output, $filter );
- }
- /**
- * Output the link to the reply in the reply loop
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_permalink() To get the reply permalink
- */
- function bbp_reply_permalink( $reply_id = 0 ) {
- echo bbp_get_reply_permalink( $reply_id );
- }
- /**
- * Return the link to the reply
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_permalink() To get the permalink of the reply
- * @uses apply_filters() Calls 'bbp_get_reply_permalink' with the link
- * and reply id
- * @return string Permanent link to reply
- */
- function bbp_get_reply_permalink( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- return apply_filters( 'bbp_get_reply_permalink', get_permalink( $reply_id ), $reply_id );
- }
- /**
- * Output the paginated url to the reply in the reply loop
- *
- * @since bbPress (r2679)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_url() To get the reply url
- */
- function bbp_reply_url( $reply_id = 0 ) {
- echo bbp_get_reply_url( $reply_id );
- }
- /**
- * Return the paginated url to the reply in the reply loop
- *
- * @since bbPress (r2679)
- *
- * @param int $reply_id Optional. Reply id
- * @param $string $redirect_to Optional. Pass a redirect value for use with
- * shortcodes and other fun things.
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_topic_id() To get the reply topic id
- * @uses bbp_get_topic_permalink() To get the topic permalink
- * @uses bbp_get_reply_position() To get the reply position
- * @uses get_option() To get the replies per page option
- * @uses WP_Rewrite::using_permalinks() To check if the blog uses
- * permalinks
- * @uses add_query_arg() To add custom args to the url
- * @uses apply_filters() Calls 'bbp_get_reply_url' with the reply url,
- * reply id and bool count hidden
- * @return string Link to reply relative to paginated topic
- */
- function bbp_get_reply_url( $reply_id = 0, $redirect_to = '' ) {
- // Set needed variables
- $reply_id = bbp_get_reply_id ( $reply_id );
- $topic_id = bbp_get_reply_topic_id( $reply_id );
- $reply_page = ceil( (int) bbp_get_reply_position( $reply_id, $topic_id ) / (int) bbp_get_replies_per_page() );
- $reply_hash = '#post-' . $reply_id;
- $topic_link = bbp_get_topic_permalink( $topic_id, $redirect_to );
- $topic_url = remove_query_arg( 'view', $topic_link );
- // Don't include pagination if on first page
- if ( 1 >= $reply_page ) {
- $url = trailingslashit( $topic_url ) . $reply_hash;
- // Include pagination
- } else {
- global $wp_rewrite;
- // Pretty permalinks
- if ( $wp_rewrite->using_permalinks() ) {
- $url = trailingslashit( $topic_url ) . trailingslashit( $wp_rewrite->pagination_base ) . trailingslashit( $reply_page ) . $reply_hash;
- // Yucky links
- } else {
- $url = add_query_arg( 'paged', $reply_page, $topic_url ) . $reply_hash;
- }
- }
- // Add topic view query arg back to end if it is set
- if ( bbp_get_view_all() )
- $url = bbp_add_view_all( $url );
- return apply_filters( 'bbp_get_reply_url', $url, $reply_id, $redirect_to );
- }
- /**
- * Output the title of the reply
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_title() To get the reply title
- */
- function bbp_reply_title( $reply_id = 0 ) {
- echo bbp_get_reply_title( $reply_id );
- }
- /**
- * Return the title of the reply
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_the_title() To get the reply title
- * @uses apply_filters() Calls 'bbp_get_reply_title' with the title and
- * reply id
- * @return string Title of reply
- */
- function bbp_get_reply_title( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- return apply_filters( 'bbp_get_reply_title', get_the_title( $reply_id ), $reply_id );
- }
- /**
- * Output the content of the reply
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. reply id
- * @uses bbp_get_reply_content() To get the reply content
- */
- function bbp_reply_content( $reply_id = 0 ) {
- echo bbp_get_reply_content( $reply_id );
- }
- /**
- * Return the content of the reply
- *
- * @since bbPress (r2780)
- *
- * @param int $reply_id Optional. reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses post_password_required() To check if the reply requires pass
- * @uses get_the_password_form() To get the password form
- * @uses get_post_field() To get the content post field
- * @uses apply_filters() Calls 'bbp_get_reply_content' with the content
- * and reply id
- * @return string Content of the reply
- */
- function bbp_get_reply_content( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- // Check if password is required
- if ( post_password_required( $reply_id ) )
- return get_the_password_form();
- $content = get_post_field( 'post_content', $reply_id );
- return apply_filters( 'bbp_get_reply_content', $content, $reply_id );
- }
- /**
- * Output the excerpt of the reply
- *
- * @since bbPress (r2751)
- *
- * @param int $reply_id Optional. Reply id
- * @param int $length Optional. Length of the excerpt. Defaults to 100 letters
- * @uses bbp_get_reply_excerpt() To get the reply excerpt
- */
- function bbp_reply_excerpt( $reply_id = 0, $length = 100 ) {
- echo bbp_get_reply_excerpt( $reply_id, $length );
- }
- /**
- * Return the excerpt of the reply
- *
- * @since bbPress (r2751)
- *
- * @param int $reply_id Optional. Reply id
- * @param int $length Optional. Length of the excerpt. Defaults to 100
- * letters
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_field() To get the excerpt
- * @uses bbp_get_reply_content() To get the reply content
- * @uses apply_filters() Calls 'bbp_get_reply_excerpt' with the excerpt,
- * reply id and length
- * @return string Reply Excerpt
- */
- function bbp_get_reply_excerpt( $reply_id = 0, $length = 100 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- $length = (int) $length;
- $excerpt = get_post_field( 'post_excerpt', $reply_id );
- if ( empty( $excerpt ) ) {
- $excerpt = bbp_get_reply_content( $reply_id );
- }
- $excerpt = trim ( strip_tags( $excerpt ) );
- // Multibyte support
- if ( function_exists( 'mb_strlen' ) ) {
- $excerpt_length = mb_strlen( $excerpt );
- } else {
- $excerpt_length = strlen( $excerpt );
- }
- if ( !empty( $length ) && ( $excerpt_length > $length ) ) {
- $excerpt = substr( $excerpt, 0, $length - 1 );
- $excerpt .= '…';
- }
- return apply_filters( 'bbp_get_reply_excerpt', $excerpt, $reply_id, $length );
- }
- /**
- * Output the post date and time of a reply
- *
- * @since bbPress (r4155)
- *
- * @param int $reply_id Optional. Reply id.
- * @param bool $humanize Optional. Humanize output using time_since
- * @param bool $gmt Optional. Use GMT
- * @uses bbp_get_reply_post_date() to get the output
- */
- function bbp_reply_post_date( $reply_id = 0, $humanize = false, $gmt = false ) {
- echo bbp_get_reply_post_date( $reply_id, $humanize, $gmt );
- }
- /**
- * Return the post date and time of a reply
- *
- * @since bbPress (r4155)
- *
- * @param int $reply_id Optional. Reply id.
- * @param bool $humanize Optional. Humanize output using time_since
- * @param bool $gmt Optional. Use GMT
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_time() to get the reply post time
- * @uses bbp_get_time_since() to maybe humanize the reply post time
- * @return string
- */
- function bbp_get_reply_post_date( $reply_id = 0, $humanize = false, $gmt = false ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- // 4 days, 4 hours ago
- if ( !empty( $humanize ) ) {
- $gmt_s = !empty( $gmt ) ? 'G' : 'U';
- $date = get_post_time( $gmt_s, $gmt, $reply_id );
- $time = false; // For filter below
- $result = bbp_get_time_since( $date );
- // August 4, 2012 at 2:37 pm
- } else {
- $date = get_post_time( get_option( 'date_format' ), $gmt, $reply_id, true );
- $time = get_post_time( get_option( 'time_format' ), $gmt, $reply_id, true );
- $result = sprintf( _x( '%1$s at %2$s', 'date at time', 'bbpress' ), $date, $time );
- }
- return apply_filters( 'bbp_get_reply_post_date', $result, $reply_id, $humanize, $gmt, $date, $time );
- }
- /**
- * Append revisions to the reply content
- *
- * @since bbPress (r2782)
- *
- * @param string $content Optional. Content to which we need to append the revisions to
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_revision_log() To get the reply revision log
- * @uses apply_filters() Calls 'bbp_reply_append_revisions' with the processed
- * content, original content and reply id
- * @return string Content with the revisions appended
- */
- function bbp_reply_content_append_revisions( $content = '', $reply_id = 0 ) {
- // Bail if in admin or feed
- if ( is_admin() || is_feed() )
- return $content;
- // Validate the ID
- $reply_id = bbp_get_reply_id( $reply_id );
- return apply_filters( 'bbp_reply_append_revisions', $content . bbp_get_reply_revision_log( $reply_id ), $content, $reply_id );
- }
- /**
- * Output the revision log of the reply
- *
- * @since bbPress (r2782)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_revision_log() To get the reply revision log
- */
- function bbp_reply_revision_log( $reply_id = 0 ) {
- echo bbp_get_reply_revision_log( $reply_id );
- }
- /**
- * Return the formatted revision log of the reply
- *
- * @since bbPress (r2782)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_revisions() To get the reply revisions
- * @uses bbp_get_reply_raw_revision_log() To get the raw revision log
- * @uses bbp_get_reply_author_display_name() To get the reply author
- * @uses bbp_get_reply_author_link() To get the reply author link
- * @uses bbp_convert_date() To convert the date
- * @uses bbp_get_time_since() To get the time in since format
- * @uses apply_filters() Calls 'bbp_get_reply_revision_log' with the
- * log and reply id
- * @return string Revision log of the reply
- */
- function bbp_get_reply_revision_log( $reply_id = 0 ) {
- // Create necessary variables
- $reply_id = bbp_get_reply_id( $reply_id );
- // Show the topic reply log if this is a topic in a reply loop
- if ( bbp_is_topic( $reply_id ) ) {
- return bbp_get_topic_revision_log( $reply_id );
- }
- // Get the reply revision log (out of post meta
- $revision_log = bbp_get_reply_raw_revision_log( $reply_id );
- // Check reply and revision log exist
- if ( empty( $reply_id ) || empty( $revision_log ) || !is_array( $revision_log ) )
- return false;
- // Get the actual revisions
- $revisions = bbp_get_reply_revisions( $reply_id );
- if ( empty( $revisions ) )
- return false;
- $r = "\n\n" . '<ul id="bbp-reply-revision-log-' . $reply_id . '" class="bbp-reply-revision-log">' . "\n\n";
- // Loop through revisions
- foreach ( (array) $revisions as $revision ) {
- if ( empty( $revision_log[$revision->ID] ) ) {
- $author_id = $revision->post_author;
- $reason = '';
- } else {
- $author_id = $revision_log[$revision->ID]['author'];
- $reason = $revision_log[$revision->ID]['reason'];
- }
- $author = bbp_get_author_link( array( 'size' => 14, 'link_text' => bbp_get_reply_author_display_name( $revision->ID ), 'post_id' => $revision->ID ) );
- $since = bbp_get_time_since( bbp_convert_date( $revision->post_modified ) );
- $r .= "\t" . '<li id="bbp-reply-revision-log-' . $reply_id . '-item-' . $revision->ID . '" class="bbp-reply-revision-log-item">' . "\n";
- if ( !empty( $reason ) ) {
- $r .= "\t\t" . sprintf( __( 'This reply was modified %1$s by %2$s. Reason: %3$s', 'bbpress' ), $since, $author, $reason ) . "\n";
- } else {
- $r .= "\t\t" . sprintf( __( 'This reply was modified %1$s by %2$s.', 'bbpress' ), $since, $author ) . "\n";
- }
- $r .= "\t" . '</li>' . "\n";
- }
- $r .= "\n" . '</ul>' . "\n\n";
- return apply_filters( 'bbp_get_reply_revision_log', $r, $reply_id );
- }
- /**
- * Return the raw revision log of the reply
- *
- * @since bbPress (r2782)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_meta() To get the revision log meta
- * @uses apply_filters() Calls 'bbp_get_reply_raw_revision_log'
- * with the log and reply id
- * @return string Raw revision log of the reply
- */
- function bbp_get_reply_raw_revision_log( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- $revision_log = get_post_meta( $reply_id, '_bbp_revision_log', true );
- $revision_log = empty( $revision_log ) ? array() : $revision_log;
- return apply_filters( 'bbp_get_reply_raw_revision_log', $revision_log, $reply_id );
- }
- /**
- * Return the revisions of the reply
- *
- * @since bbPress (r2782)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses wp_get_post_revisions() To get the reply revisions
- * @uses apply_filters() Calls 'bbp_get_reply_revisions'
- * with the revisions and reply id
- * @return string reply revisions
- */
- function bbp_get_reply_revisions( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- $revisions = wp_get_post_revisions( $reply_id, array( 'order' => 'ASC' ) );
- return apply_filters( 'bbp_get_reply_revisions', $revisions, $reply_id );
- }
- /**
- * Return the revision count of the reply
- *
- * @since bbPress (r2782)
- *
- * @param int $reply_id Optional. Reply id
- * @param boolean $integer Optional. Whether or not to format the result
- * @uses bbp_get_reply_revisions() To get the reply revisions
- * @uses apply_filters() Calls 'bbp_get_reply_revision_count'
- * with the revision count and reply id
- * @return string reply revision count
- */
- function bbp_get_reply_revision_count( $reply_id = 0, $integer = false ) {
- $count = (int) count( bbp_get_reply_revisions( $reply_id ) );
- $filter = ( true === $integer ) ? 'bbp_get_reply_revision_count_int' : 'bbp_get_reply_revision_count';
- return apply_filters( $filter, $count, $reply_id );
- }
- /**
- * Output the status of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_status() To get the reply status
- */
- function bbp_reply_status( $reply_id = 0 ) {
- echo bbp_get_reply_status( $reply_id );
- }
- /**
- * Return the status of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_status() To get the reply status
- * @uses apply_filters() Calls 'bbp_get_reply_status' with the reply id
- * @return string Status of reply
- */
- function bbp_get_reply_status( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- return apply_filters( 'bbp_get_reply_status', get_post_status( $reply_id ), $reply_id );
- }
- /**
- * Is the reply not spam or deleted?
- *
- * @since bbPress (r3496)
- *
- * @param int $reply_id Optional. Topic id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_status() To get the reply status
- * @return bool True if published, false if not.
- */
- function bbp_is_reply_published( $reply_id = 0 ) {
- $reply_status = bbp_get_reply_status( bbp_get_reply_id( $reply_id ) ) == bbp_get_public_status_id();
- return (bool) apply_filters( 'bbp_is_reply_published', (bool) $reply_status, $reply_id );
- }
- /**
- * Is the reply marked as spam?
- *
- * @since bbPress (r2740)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_status() To get the reply status
- * @return bool True if spam, false if not.
- */
- function bbp_is_reply_spam( $reply_id = 0 ) {
- $reply_status = bbp_get_reply_status( bbp_get_reply_id( $reply_id ) ) == bbp_get_spam_status_id();
- return (bool) apply_filters( 'bbp_is_reply_spam', (bool) $reply_status, $reply_id );
- }
- /**
- * Is the reply trashed?
- *
- * @since bbPress (r2884)
- *
- * @param int $reply_id Optional. Topic id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_status() To get the reply status
- * @return bool True if spam, false if not.
- */
- function bbp_is_reply_trash( $reply_id = 0 ) {
- $reply_status = bbp_get_reply_status( bbp_get_reply_id( $reply_id ) ) == bbp_get_trash_status_id();
- return (bool) apply_filters( 'bbp_is_reply_trash', (bool) $reply_status, $reply_id );
- }
- /**
- * Is the reply by an anonymous user?
- *
- * @since bbPress (r2753)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses get_post_meta() To get the anonymous name and email metas
- * @return bool True if the post is by an anonymous user, false if not.
- */
- function bbp_is_reply_anonymous( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- $retval = false;
- if ( !bbp_get_reply_author_id( $reply_id ) )
- $retval = true;
- elseif ( get_post_meta( $reply_id, '_bbp_anonymous_name', true ) )
- $retval = true;
- elseif ( get_post_meta( $reply_id, '_bbp_anonymous_email', true ) )
- $retval = true;
- return (bool) apply_filters( 'bbp_is_reply_anonymous', $retval, $reply_id );
- }
- /**
- * Output the author of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_author() To get the reply author
- */
- function bbp_reply_author( $reply_id = 0 ) {
- echo bbp_get_reply_author( $reply_id );
- }
- /**
- * Return the author of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_is_reply_anonymous() To check if the reply is by an
- * anonymous user
- * @uses get_the_author_meta() To get the reply author display name
- * @uses get_post_meta() To get the anonymous poster name
- * @uses apply_filters() Calls 'bbp_get_reply_author' with the reply
- * author and reply id
- * @return string Author of reply
- */
- function bbp_get_reply_author( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- if ( !bbp_is_reply_anonymous( $reply_id ) ) {
- $author = get_the_author_meta( 'display_name', bbp_get_reply_author_id( $reply_id ) );
- } else {
- $author = get_post_meta( $reply_id, '_bbp_anonymous_name', true );
- }
- return apply_filters( 'bbp_get_reply_author', $author, $reply_id );
- }
- /**
- * Output the author ID of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_author_id() To get the reply author id
- */
- function bbp_reply_author_id( $reply_id = 0 ) {
- echo bbp_get_reply_author_id( $reply_id );
- }
- /**
- * Return the author ID of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_field() To get the reply author id
- * @uses apply_filters() Calls 'bbp_get_reply_author_id' with the author
- * id and reply id
- * @return string Author id of reply
- */
- function bbp_get_reply_author_id( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- $author_id = get_post_field( 'post_author', $reply_id );
- return (int) apply_filters( 'bbp_get_reply_author_id', $author_id, $reply_id );
- }
- /**
- * Output the author display_name of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_author_display_name()
- */
- function bbp_reply_author_display_name( $reply_id = 0 ) {
- echo bbp_get_reply_author_display_name( $reply_id );
- }
- /**
- * Return the author display_name of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_is_reply_anonymous() To check if the reply is by an
- * anonymous user
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses get_the_author_meta() To get the reply author's display name
- * @uses get_post_meta() To get the anonymous poster's name
- * @uses apply_filters() Calls 'bbp_get_reply_author_display_name' with
- * the author display name and reply id
- * @return string Reply's author's display name
- */
- function bbp_get_reply_author_display_name( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- // User is not a guest
- if ( !bbp_is_reply_anonymous( $reply_id ) ) {
- // Get the author ID
- $author_id = bbp_get_reply_author_id( $reply_id );
- // Try to get a display name
- $author_name = get_the_author_meta( 'display_name', $author_id );
- // Fall back to user login
- if ( empty( $author_name ) ) {
- $author_name = get_the_author_meta( 'user_login', $author_id );
- }
- // User does not have an account
- } else {
- $author_name = get_post_meta( $reply_id, '_bbp_anonymous_name', true );
- }
- // If nothing could be found anywhere, use Anonymous
- if ( empty( $author_name ) )
- $author_name = __( 'Anonymous', 'bbpress' );
- // Encode possible UTF8 display names
- if ( seems_utf8( $author_name ) === false )
- $author_name = utf8_encode( $author_name );
- return apply_filters( 'bbp_get_reply_author_display_name', $author_name, $reply_id );
- }
- /**
- * Output the author avatar of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @param int $size Optional. Size of the avatar. Defaults to 40
- * @uses bbp_get_reply_author_avatar() To get the reply author id
- */
- function bbp_reply_author_avatar( $reply_id = 0, $size = 40 ) {
- echo bbp_get_reply_author_avatar( $reply_id, $size );
- }
- /**
- * Return the author avatar of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @param int $size Optional. Size of the avatar. Defaults to 40
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_is_reply_anonymous() To check if the reply is by an
- * anonymous user
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses get_post_meta() To get the anonymous poster's email id
- * @uses get_avatar() To get the avatar
- * @uses apply_filters() Calls 'bbp_get_reply_author_avatar' with the
- * author avatar, reply id and size
- * @return string Avatar of author of the reply
- */
- function bbp_get_reply_author_avatar( $reply_id = 0, $size = 40 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- if ( !empty( $reply_id ) ) {
- // Check for anonymous user
- if ( !bbp_is_reply_anonymous( $reply_id ) ) {
- $author_avatar = get_avatar( bbp_get_reply_author_id( $reply_id ), $size );
- } else {
- $author_avatar = get_avatar( get_post_meta( $reply_id, '_bbp_anonymous_email', true ), $size );
- }
- } else {
- $author_avatar = '';
- }
- return apply_filters( 'bbp_get_reply_author_avatar', $author_avatar, $reply_id, $size );
- }
- /**
- * Output the author link of the reply
- *
- * @since bbPress (r2717)
- *
- * @param mixed $args Optional. If it is an integer, it is used as reply id.
- * @uses bbp_get_reply_author_link() To get the reply author link
- */
- function bbp_reply_author_link( $args = '' ) {
- echo bbp_get_reply_author_link( $args );
- }
- /**
- * Return the author link of the reply
- *
- * @since bbPress (r2717)
- *
- * @param mixed $args Optional. If an integer, it is used as reply id.
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_is_reply_anonymous() To check if the reply is by an
- * anonymous user
- * @uses bbp_get_reply_author() To get the reply author name
- * @uses bbp_get_reply_author_url() To get the reply author url
- * @uses bbp_get_reply_author_avatar() To get the reply author avatar
- * @uses bbp_get_reply_author_display_name() To get the reply author display
- * name
- * @uses bbp_get_user_display_role() To get the reply author display role
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses apply_filters() Calls 'bbp_get_reply_author_link' with the
- * author link and args
- * @return string Author link of reply
- */
- function bbp_get_reply_author_link( $args = '' ) {
- // Parse arguments against default values
- $r = bbp_parse_args( $args, array(
- 'post_id' => 0,
- 'link_title' => '',
- 'type' => 'both',
- 'size' => 80,
- 'sep' => ' ',
- 'show_role' => false
- ), 'get_reply_author_link' );
- // Used as reply_id
- if ( is_numeric( $args ) ) {
- $reply_id = bbp_get_reply_id( $args );
- } else {
- $reply_id = bbp_get_reply_id( $r['post_id'] );
- }
- // Reply ID is good
- if ( !empty( $reply_id ) ) {
- // Get some useful reply information
- $author_url = bbp_get_reply_author_url( $reply_id );
- $anonymous = bbp_is_reply_anonymous( $reply_id );
- // Tweak link title if empty
- if ( empty( $$r['link_title'] ) ) {
- $link_title = sprintf( empty( $anonymous ) ? __( 'View %s\'s profile', 'bbpress' ) : __( 'Visit %s\'s website', 'bbpress' ), bbp_get_reply_author_display_name( $reply_id ) );
- // Use what was passed if not
- } else {
- $link_title = $r['link_title'];
- }
- // Setup title and author_links array
- $link_title = !empty( $link_title ) ? ' title="' . $link_title . '"' : '';
- $author_links = array();
- // Get avatar
- if ( 'avatar' == $r['type'] || 'both' == $r['type'] ) {
- $author_links['avatar'] = bbp_get_reply_author_avatar( $reply_id, $r['size'] );
- }
- // Get display name
- if ( 'name' == $r['type'] || 'both' == $r['type'] ) {
- $author_links['name'] = bbp_get_reply_author_display_name( $reply_id );
- }
- // Link class
- $link_class = ' class="bbp-author-' . $r['type'] . '"';
- // Add links if not anonymous
- if ( empty( $anonymous ) && bbp_user_has_profile( bbp_get_reply_author_id( $reply_id ) ) ) {
- // Assemble the links
- foreach ( $author_links as $link => $link_text ) {
- $link_class = ' class="bbp-author-' . $link . '"';
- $author_link[] = sprintf( '<a href="%1$s"%2$s%3$s>%4$s</a>', $author_url, $link_title, $link_class, $link_text );
- }
- if ( true === $r['show_role'] ) {
- $author_link[] = bbp_get_reply_author_role( array( 'reply_id' => $reply_id ) );
- }
- $author_link = join( $r['sep'], $author_link );
- // No links if anonymous
- } else {
- $author_link = join( $r['sep'], $author_links );
- }
- // No replies so link is empty
- } else {
- $author_link = '';
- }
- return apply_filters( 'bbp_get_reply_author_link', $author_link, $r );
- }
- /**
- * Output the author url of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_author_url() To get the reply author url
- */
- function bbp_reply_author_url( $reply_id = 0 ) {
- echo bbp_get_reply_author_url( $reply_id );
- }
- /**
- * Return the author url of the reply
- *
- * @since bbPress (r2667)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_is_reply_anonymous() To check if the reply is by an anonymous
- * user
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses bbp_get_user_profile_url() To get the user profile url
- * @uses get_post_meta() To get the anonymous poster's website url
- * @uses apply_filters() Calls bbp_get_reply_author_url with the author
- * url & reply id
- * @return string Author URL of the reply
- */
- function bbp_get_reply_author_url( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- // Check for anonymous user
- if ( !bbp_is_reply_anonymous( $reply_id ) ) {
- $author_url = bbp_get_user_profile_url( bbp_get_reply_author_id( $reply_id ) );
- } else {
- $author_url = get_post_meta( $reply_id, '_bbp_anonymous_website', true );
- if ( empty( $author_url ) ) {
- $author_url = '';
- }
- }
- return apply_filters( 'bbp_get_reply_author_url', $author_url, $reply_id );
- }
- /**
- * Output the reply author email address
- *
- * @since bbPress (r3445)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_author_email() To get the reply author email
- */
- function bbp_reply_author_email( $reply_id = 0 ) {
- echo bbp_get_reply_author_email( $reply_id );
- }
- /**
- * Return the reply author email address
- *
- * @since bbPress (r3445)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_is_reply_anonymous() To check if the reply is by an anonymous
- * user
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses get_userdata() To get the user data
- * @uses get_post_meta() To get the anonymous poster's website email
- * @uses apply_filters() Calls bbp_get_reply_author_email with the author
- * email & reply id
- * @return string Reply author email address
- */
- function bbp_get_reply_author_email( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- // Not anonymous
- if ( !bbp_is_reply_anonymous( $reply_id ) ) {
- // Use reply author email address
- $user_id = bbp_get_reply_author_id( $reply_id );
- $user = get_userdata( $user_id );
- $author_email = !empty( $user->user_email ) ? $user->user_email : '';
- // Anonymous
- } else {
- // Get email from post meta
- $author_email = get_post_meta( $reply_id, '_bbp_anonymous_email', true );
- // Sanity check for missing email address
- if ( empty( $author_email ) ) {
- $author_email = '';
- }
- }
- return apply_filters( 'bbp_get_reply_author_email', $author_email, $reply_id );
- }
- /**
- * Output the reply author role
- *
- * @since bbPress (r3860)
- *
- * @param array $args Optional.
- * @uses bbp_get_reply_author_role() To get the reply author role
- */
- function bbp_reply_author_role( $args = array() ) {
- echo bbp_get_reply_author_role( $args );
- }
- /**
- * Return the reply author role
- *
- * @since bbPress (r3860)
- *
- * @param array $args Optional.
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_user_display_role() To get the user display role
- * @uses bbp_get_reply_author_id() To get the reply author id
- * @uses apply_filters() Calls bbp_get_reply_author_role with the author
- * role & args
- * @return string Reply author role
- */
- function bbp_get_reply_author_role( $args = array() ) {
- // Parse arguments against default values
- $r = bbp_parse_args( $args, array(
- 'reply_id' => 0,
- 'class' => 'bbp-author-role',
- 'before' => '',
- 'after' => ''
- ), 'get_reply_author_role' );
- $reply_id = bbp_get_reply_id( $r['reply_id'] );
- $role = bbp_get_user_display_role( bbp_get_reply_author_id( $reply_id ) );
- $author_role = sprintf( '%1$s<div class="%2$s">%3$s</div>%4$s', $r['before'], $r['class'], $role, $r['after'] );
- return apply_filters( 'bbp_get_reply_author_role', $author_role, $r );
- }
- /**
- * Output the topic title a reply belongs to
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_topic_title() To get the reply topic title
- */
- function bbp_reply_topic_title( $reply_id = 0 ) {
- echo bbp_get_reply_topic_title( $reply_id );
- }
- /**
- * Return the topic title a reply belongs to
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_topic_id() To get the reply topic id
- * @uses bbp_get_topic_title() To get the reply topic title
- * @uses apply_filters() Calls 'bbp_get_reply_topic_title' with the
- * topic title and reply id
- * @return string Reply's topic's title
- */
- function bbp_get_reply_topic_title( $reply_id = 0 ) {
- $reply_id = bbp_get_reply_id( $reply_id );
- $topic_id = bbp_get_reply_topic_id( $reply_id );
- return apply_filters( 'bbp_get_reply_topic_title', bbp_get_topic_title( $topic_id ), $reply_id );
- }
- /**
- * Output the topic id a reply belongs to
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_topic_id() To get the reply topic id
- */
- function bbp_reply_topic_id( $reply_id = 0 ) {
- echo bbp_get_reply_topic_id( $reply_id );
- }
- /**
- * Return the topic id a reply belongs to
- *
- * @since bbPress (r2553)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_meta() To get the reply topic id from meta
- * @uses bbp_get_topic_id() To get the topic id
- * @uses apply_filters() Calls 'bbp_get_reply_topic_id' with the topic
- * id and reply id
- * @return int Reply's topic id
- */
- function bbp_get_reply_topic_id( $reply_id = 0 ) {
- // Assume there is no topic id
- $topic_id = 0;
- // Check that reply_id is valid
- if ( $reply_id = bbp_get_reply_id( $reply_id ) )
- // Get topic_id from reply
- if ( $topic_id = get_post_meta( $reply_id, '_bbp_topic_id', true ) )
- // Validate the topic_id
- $topic_id = bbp_get_topic_id( $topic_id );
- return (int) apply_filters( 'bbp_get_reply_topic_id', $topic_id, $reply_id );
- }
- /**
- * Output the forum id a reply belongs to
- *
- * @since bbPress (r2679)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_forum_id() To get the reply forum id
- */
- function bbp_reply_forum_id( $reply_id = 0 ) {
- echo bbp_get_reply_forum_id( $reply_id );
- }
- /**
- * Return the forum id a reply belongs to
- *
- * @since bbPress (r2679)
- *
- * @param int $reply_id Optional. Reply id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses get_post_meta() To get the reply forum id
- * @uses apply_filters() Calls 'bbp_get_reply_forum_id' with the forum
- * id and reply id
- * @return int Reply's forum id
- */
- function bbp_get_reply_forum_id( $reply_id = 0 ) {
- // Assume there is no forum
- $forum_id = 0;
- // Check that reply_id is valid
- if ( $reply_id = bbp_get_reply_id( $reply_id ) )
- // Get forum_id from reply
- if ( $forum_id = get_post_meta( $reply_id, '_bbp_forum_id', true ) )
- // Validate the forum_id
- $forum_id = bbp_get_forum_id( $forum_id );
- return (int) apply_filters( 'bbp_get_reply_forum_id', $forum_id, $reply_id );
- }
- /**
- * Output the numeric position of a reply within a topic
- *
- * @since bbPress (r2984)
- *
- * @param int $reply_id Optional. Reply id
- * @param int $topic_id Optional. Topic id
- * @uses bbp_get_reply_position() To get the reply position
- */
- function bbp_reply_position( $reply_id = 0, $topic_id = 0 ) {
- echo bbp_get_reply_position( $reply_id, $topic_id );
- }
- /**
- * Return the numeric position of a reply within a topic
- *
- * @since bbPress (r2984)
- *
- * @param int $reply_id Optional. Reply id
- * @param int $topic_id Optional. Topic id
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_topic_id() Get the topic id of the reply id
- * @uses bbp_get_topic_reply_count() To get the topic reply count
- * @uses bbp_get_reply_post_type() To get the reply post type
- * @uses bbp_get_reply_position_raw() To get calculate the reply position
- * @uses bbp_update_reply_position() To update the reply position
- * @uses bbp_show_lead_topic() Bump the count if lead topic is included
- * @uses apply_filters() Calls 'bbp_get_reply_position' with the reply
- * position, reply id and topic id
- * @return int Reply position
- */
- function bbp_get_reply_position( $reply_id = 0, $topic_id = 0 ) {
- // Get required data
- $reply_id = bbp_get_reply_id( $reply_id );
- $reply_position = get_post_field( 'menu_order', $reply_id );
- // Reply doesn't have a position so get the raw value
- if ( empty( $reply_position ) ) {
- $topic_id = !empty( $topic_id ) ? bbp_get_topic_id( $topic_id ) : bbp_get_reply_topic_id( $reply_id );
- // Post is not the topic
- if ( $reply_id != $topic_id ) {
- $reply_position = bbp_get_reply_position_raw( $reply_id, $topic_id );
- // Update the reply position in the posts table so we'll never have
- // to hit the DB again.
- if ( !empty( $reply_position ) ) {
- bbp_update_reply_position( $reply_id, $reply_position );
- }
- // Topic's position is always 0
- } else {
- $reply_position = 0;
- }
- }
- // Bump the position by one if the lead topic is in the replies loop
- if ( ! bbp_show_lead_topic() )
- $reply_position++;
- return (int) apply_filters( 'bbp_get_reply_position', $reply_position, $reply_id, $topic_id );
- }
- /** Reply Admin Links *********************************************************/
- /**
- * Output admin links for reply
- *
- * @since bbPress (r2667)
- *
- * @param mixed $args See {@link bbp_get_reply_admin_links()}
- * @uses bbp_get_reply_admin_links() To get the reply admin links
- */
- function bbp_reply_admin_links( $args = '' ) {
- echo bbp_get_reply_admin_links( $args );
- }
- /**
- * Return admin links for reply
- *
- * @since bbPress (r2667)
- *
- * @param mixed $args This function supports these arguments:
- * - id: Optional. Reply id
- * - before: HTML before the links. Defaults to
- * '<span class="bbp-admin-links">'
- * - after: HTML after the links. Defaults to '</span>'
- * - sep: Separator. Defaults to ' | '
- * - links: Array of the links to display. By default, edit, trash,
- * spam, reply move, and topic split links are displayed
- * @uses bbp_is_topic() To check if it's the topic page
- * @uses bbp_is_reply() To check if it's the reply page
- * @uses bbp_get_reply_id() To get the reply id
- * @uses bbp_get_reply_edit_link() To get the reply edit link
- * @uses bbp_get_reply_trash_link() To get the reply trash link
- * @uses bbp_get_reply_spam_link() To get the reply spam link
- * @uses bbp_get_reply_move_link() To get the reply move link
- * @uses bbp_get_topic_split_link() To get the topic split link
- * @uses current_user_can() To check if the current user can edit or
- * delete the reply
- * @uses apply_filters() Calls 'bbp_get_reply_admin_links' with the
- * reply admin links and args
- * @return string Reply admin links
- */
- function bbp_get_reply_admin_links( $args = '' ) {
- // Parse arguments against default values
- $r = bbp_parse_args( $args, array(
- 'id' => 0,
- 'before' => '<span class="bbp-admin-links">',
- 'after' => '</span>',
- 'sep' => ' | ',
- 'links' => array()
- ), 'get_reply_admin_links' );
- $r['id'] = bbp_get_reply_id( (int) $r['id'] );
- // If post is a topic, return the topic admin links instead
- if ( bbp_is_topic( $r['id'] ) )
- return bbp_get_topic_admin_links( $args );
- // If post is not a reply, return
- if ( !bbp_is_reply( $r['id'] ) )
- return;
- // Make sure user can edit this reply
- if ( !current_user_can( 'edit_reply', $r['id'] ) )
- return;
- // If topic is trashed, do not show admin links
- if ( bbp_is_topic_trash( bbp_get_reply_topic_id( $r['id'] ) ) )
- return;
- // If no links were passed, default to the standard
- if ( empty( $r['links'] ) ) {
- $r['links'] = apply_filters( 'bbp_reply_admin_links', array(
- 'edit' => bbp_get_reply_edit_link ( $r ),
- 'move' => bbp_get_reply_move_link ( $r ),
- 'split' => bbp_get_topic_split_link( $r ),
- 'trash' => bbp_get_reply_t…
Large files files are truncated, but you can click here to view the full file