Skip to:
Content

bbPress.org


Ignore:
Timestamp:
02/23/2017 11:24:29 PM (7 years ago)
Author:
johnjamesjacoby
Message:

Common: Introduce bbp_number_not_negative() and use it in the following ways:

  • Register the relevant meta-data keys for posts & users, so updated values can never be invalid
  • Filter return values for existing database values that might be invalid on existing installs
  • Use in place of intval() or (int) casts where negative values should not exist

This has the added benefit of introducing the bbp_register_meta hook, for future meta-data registrations (of which bbPress has much of.) We'll concentrate on counts for 2.6, and integrate IDs and timestamps in future releases.

See #3059.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/forums/template.php

    r6296 r6302  
    13261326    function bbp_get_forum_subforum_count( $forum_id = 0, $integer = false ) {
    13271327        $forum_id    = bbp_get_forum_id( $forum_id );
    1328         $forum_count = (int) get_post_meta( $forum_id, '_bbp_forum_subforum_count', true );
    1329         $filter      = ( true === $integer ) ? 'bbp_get_forum_subforum_count_int' : 'bbp_get_forum_subforum_count';
     1328        $forum_count = bbp_number_not_negative( get_post_meta( $forum_id, '_bbp_forum_subforum_count', true ) );
     1329        $filter      = ( true === $integer )
     1330            ? 'bbp_get_forum_subforum_count_int'
     1331            : 'bbp_get_forum_subforum_count';
    13301332
    13311333        return apply_filters( $filter, $forum_count, $forum_id );
     
    13631365        $forum_id = bbp_get_forum_id( $forum_id );
    13641366        $meta_key = empty( $total_count ) ? '_bbp_topic_count' : '_bbp_total_topic_count';
    1365         $topics   = (int) get_post_meta( $forum_id, $meta_key, true );
    1366         $filter   = ( true === $integer ) ? 'bbp_get_forum_topic_count_int' : 'bbp_get_forum_topic_count';
     1367        $topics   = bbp_number_not_negative( get_post_meta( $forum_id, $meta_key, true ) );
     1368        $filter   = ( true === $integer )
     1369            ? 'bbp_get_forum_topic_count_int'
     1370            : 'bbp_get_forum_topic_count';
    13671371
    13681372        return apply_filters( $filter, $topics, $forum_id );
     
    14001404        $forum_id = bbp_get_forum_id( $forum_id );
    14011405        $meta_key = empty( $total_count ) ? '_bbp_reply_count' : '_bbp_total_reply_count';
    1402         $replies  = (int) get_post_meta( $forum_id, $meta_key, true );
    1403         $filter   = ( true === $integer ) ? 'bbp_get_forum_reply_count_int' : 'bbp_get_forum_reply_count';
     1406        $replies  = bbp_number_not_negative( get_post_meta( $forum_id, $meta_key, true ) );
     1407        $filter   = ( true === $integer )
     1408            ? 'bbp_get_forum_reply_count_int'
     1409            : 'bbp_get_forum_reply_count';
    14041410
    14051411        return apply_filters( $filter, $replies, $forum_id );
     
    14391445        $topics   = bbp_get_forum_topic_count( $forum_id, $total_count, true );
    14401446        $replies  = bbp_get_forum_reply_count( $forum_id, $total_count, true );
    1441         $retval   = $replies + $topics;
     1447        $retval   = bbp_number_not_negative( $replies + $topics );
    14421448        $filter   = ( true === $integer )
    14431449                ? 'bbp_get_forum_post_count_int'
     
    14761482    function bbp_get_forum_topic_count_hidden( $forum_id = 0, $integer = false ) {
    14771483        $forum_id = bbp_get_forum_id( $forum_id );
    1478         $topics   = (int) get_post_meta( $forum_id, '_bbp_topic_count_hidden', true );
    1479         $filter   = ( true === $integer ) ? 'bbp_get_forum_topic_count_hidden_int' : 'bbp_get_forum_topic_count_hidden';
     1484        $topics   = bbp_number_not_negative( get_post_meta( $forum_id, '_bbp_topic_count_hidden', true ) );
     1485        $filter   = ( true === $integer )
     1486            ? 'bbp_get_forum_topic_count_hidden_int'
     1487            : 'bbp_get_forum_topic_count_hidden';
    14801488
    14811489        return apply_filters( $filter, $topics, $forum_id );
Note: See TracChangeset for help on using the changeset viewer.