Skip to:
Content

bbPress.org


Ignore:
Timestamp:
10/04/2013 06:35:56 PM (11 years ago)
Author:
johnjamesjacoby
Message:

Fix bug where nested ternary comparisons in form-anonymous.php were causing duplicated, sometimes conflicting, output.

Introduce convenience template functions for better handling and output of anonymous user form field data. Wrap complex form-anonymous.php template-part access logic in a helper function (similar to other template parts.) Deprecate ambiguous bbp_topic/reply_author() functions, in favor of author_display_name() equivalents.

Fixes #2426.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/users/functions.php

    r5011 r5120  
    157157    return apply_filters( 'bbp_current_author_ua', $retval );
    158158}
     159
     160/** Anonymous Fields **********************************************************/
     161
     162/**
     163 * Performs a series of checks to ensure the current user should see the
     164 * anonymous user form fields.
     165 *
     166 * @since bbPress (r5119)
     167 *
     168 * @uses bbp_is_anonymous()
     169 * @uses bbp_is_topic_edit()
     170 * @uses bbp_is_topic_anonymous()
     171 * @uses bbp_is_reply_edit()
     172 * @uses bbp_is_reply_anonymous()
     173 *
     174 * @return bool
     175 */
     176function bbp_current_user_can_access_anonymous_user_form() {
     177
     178    // Users need to earn access
     179    $retval = false;
     180
     181    // User is not logged in, and anonymous posting is allowed
     182    if ( bbp_is_anonymous() ) {
     183        $retval = true;
     184
     185    // User is editing a topic, and topic is authored by anonymous user
     186    } elseif ( bbp_is_topic_edit() && bbp_is_topic_anonymous() ) {
     187        $retval = true;
     188
     189    // User is editing a reply, and reply is authored by anonymous user
     190    } elseif ( bbp_is_reply_edit() && bbp_is_reply_anonymous() ) {
     191        $retval = true;
     192    }
     193
     194    // Allow access to be filtered
     195    return (bool) apply_filters( 'bbp_current_user_can_access_anonymous_user_form', (bool) $retval );
     196}
     197
     198/**
     199 * Output the author disylay-name of a topic or reply.
     200 *
     201 * Convenience function to ensure proper template functions are called
     202 * and correct filters are executed. Used primarily to display topic
     203 * and reply author information in the anonymous form template-part.
     204 *
     205 * @since bbPress (r5119)
     206 *
     207 * @param int $post_id
     208 * @uses bbp_get_author_display_name() to get the author name
     209 */
     210function bbp_author_display_name( $post_id = 0 ) {
     211    echo bbp_get_author_display_name( $post_id );
     212}
     213
     214    /**
     215     * Return the author name of a topic or reply.
     216     *
     217     * Convenience function to ensure proper template functions are called
     218     * and correct filters are executed. Used primarily to display topic
     219     * and reply author information in the anonymous form template-part.
     220     *
     221     * @since bbPress (r5119)
     222     *
     223     * @param int $post_id
     224     *
     225     * @uses bbp_is_topic_edit()
     226     * @uses bbp_get_topic_author_display_name()
     227     * @uses bbp_is_reply_edit()
     228     * @uses bbp_get_reply_author_display_name()
     229     * @uses bbp_current_anonymous_user_data()
     230     *
     231     * @return string The name of the author
     232     */
     233    function bbp_get_author_display_name( $post_id = 0 ) {
     234
     235        // Define local variable(s)
     236        $retval = '';
     237
     238        // Topic edit
     239        if ( bbp_is_topic_edit() ) {
     240            $retval = bbp_get_topic_author_display_name( $post_id );
     241
     242        // Reply edit
     243        } elseif ( bbp_is_reply_edit() ) {
     244            $retval = bbp_get_reply_author_display_name( $post_id );
     245
     246        // Not an edit, so rely on current user cookie data
     247        } else {
     248            $retval = bbp_current_anonymous_user_data( 'name' );
     249        }
     250
     251        return apply_filters( 'bbp_get_author_display_name', $retval, $post_id );
     252    }
     253
     254/**
     255 * Output the author email of a topic or reply.
     256 *
     257 * Convenience function to ensure proper template functions are called
     258 * and correct filters are executed. Used primarily to display topic
     259 * and reply author information in the anonymous user form template-part.
     260 *
     261 * @since bbPress (r5119)
     262 *
     263 * @param int $post_id
     264 * @uses bbp_get_author_email() to get the author email
     265 */
     266function bbp_author_email( $post_id = 0 ) {
     267    echo bbp_get_author_email( $post_id );
     268}
     269
     270    /**
     271     * Return the author email of a topic or reply.
     272     *
     273     * Convenience function to ensure proper template functions are called
     274     * and correct filters are executed. Used primarily to display topic
     275     * and reply author information in the anonymous user form template-part.
     276     *
     277     * @since bbPress (r5119)
     278     *
     279     * @param int $post_id
     280     *
     281     * @uses bbp_is_topic_edit()
     282     * @uses bbp_get_topic_author_email()
     283     * @uses bbp_is_reply_edit()
     284     * @uses bbp_get_reply_author_email()
     285     * @uses bbp_current_anonymous_user_data()
     286     *
     287     * @return string The email of the author
     288     */
     289    function bbp_get_author_email( $post_id = 0 ) {
     290
     291        // Define local variable(s)
     292        $retval = '';
     293
     294        // Topic edit
     295        if ( bbp_is_topic_edit() ) {
     296            $retval = bbp_get_topic_author_email( $post_id );
     297
     298        // Reply edit
     299        } elseif ( bbp_is_reply_edit() ) {
     300            $retval = bbp_get_reply_author_email( $post_id );
     301
     302        // Not an edit, so rely on current user cookie data
     303        } else {
     304            $retval = bbp_current_anonymous_user_data( 'email' );
     305        }
     306
     307        return apply_filters( 'bbp_get_author_email', $retval, $post_id );
     308    }
     309
     310/**
     311 * Output the author url of a topic or reply.
     312 *
     313 * Convenience function to ensure proper template functions are called
     314 * and correct filters are executed. Used primarily to display topic
     315 * and reply author information in the anonymous user form template-part.
     316 *
     317 * @since bbPress (r5119)
     318 *
     319 * @param int $post_id
     320 * @uses bbp_get_author_url() to get the author url
     321 */
     322function bbp_author_url( $post_id = 0 ) {
     323    echo bbp_get_author_url( $post_id );
     324}
     325
     326    /**
     327     * Return the author url of a topic or reply.
     328     *
     329     * Convenience function to ensure proper template functions are called
     330     * and correct filters are executed. Used primarily to display topic
     331     * and reply author information in the anonymous user form template-part.
     332     *
     333     * @since bbPress (r5119)
     334     *
     335     * @param int $post_id
     336     *
     337     * @uses bbp_is_topic_edit()
     338     * @uses bbp_get_topic_author_url()
     339     * @uses bbp_is_reply_edit()
     340     * @uses bbp_get_reply_author_url()
     341     * @uses bbp_current_anonymous_user_data()
     342     *
     343     * @return string The url of the author
     344     */
     345    function bbp_get_author_url( $post_id = 0 ) {
     346
     347        // Define local variable(s)
     348        $retval = '';
     349
     350        // Topic edit
     351        if ( bbp_is_topic_edit() ) {
     352            $retval = bbp_get_topic_author_url( $post_id );
     353
     354        // Reply edit
     355        } elseif ( bbp_is_reply_edit() ) {
     356            $retval = bbp_get_reply_author_url( $post_id );
     357
     358        // Not an edit, so rely on current user cookie data
     359        } else {
     360            $retval = bbp_current_anonymous_user_data( 'url' );
     361        }
     362
     363        return apply_filters( 'bbp_get_author_url', $retval, $post_id );
     364    }
    159365
    160366/** Post Counts ***************************************************************/
Note: See TracChangeset for help on using the changeset viewer.