Skip to:
Content

bbPress.org


Ignore:
Timestamp:
03/05/2014 06:41:02 PM (8 years ago)
Author:
johnjamesjacoby
Message:

Introduce topic & reply counts for users:

  • New functions for updating user options.
  • New action hooks for bumping existing counts on CRUD actions.
  • Uses existing _raw functions when no counts are previously found to incrementally update missing meta values.
  • Tool for updating topic & reply counts already exists.
  • Props netweb, MZAWeb, anointed.
  • Fixes #1694.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/users/options.php

    r4995 r5309  
    4343    // Validate user id
    4444    $user_id = bbp_get_user_id( $user_id );
    45     if ( empty( $user_id ) )
     45    if ( empty( $user_id ) ) {
    4646        return;
     47    }
    4748
    4849    // Add default options
    49     foreach ( bbp_get_default_user_options() as $key => $value )
     50    foreach ( bbp_get_default_user_options() as $key => $value ) {
    5051        update_user_option( $user_id, $key, $value );
     52    }
    5153
    5254    // Allow previously activated plugins to append their own user options.
     
    6971    // Validate user id
    7072    $user_id = bbp_get_user_id( $user_id );
    71     if ( empty( $user_id ) )
     73    if ( empty( $user_id ) ) {
    7274        return;
     75    }
    7376
    7477    // Add default options
    75     foreach ( array_keys( bbp_get_default_user_options() ) as $key )
     78    foreach ( array_keys( bbp_get_default_user_options() ) as $key ) {
    7679        delete_user_option( $user_id, $key );
     80    }
    7781
    7882    // Allow previously activated plugins to append their own options.
     
    9296
    9397    // Add filters to each bbPress option
    94     foreach ( array_keys( bbp_get_default_user_options() ) as $key )
     98    foreach ( array_keys( bbp_get_default_user_options() ) as $key ) {
    9599        add_filter( 'get_user_option_' . $key, 'bbp_filter_get_user_option', 10, 3 );
     100    }
    96101
    97102    // Allow previously activated plugins to append their own options.
     
    111116
    112117    // Check the options global for preset value
    113     if ( isset( $user->ID ) && isset( $bbp->user_options[$user->ID] ) && !empty( $bbp->user_options[$user->ID][$option] ) )
     118    if ( isset( $user->ID ) && isset( $bbp->user_options[$user->ID] ) && !empty( $bbp->user_options[$user->ID][$option] ) ) {
    114119        $value = $bbp->user_options[$user->ID][$option];
     120    }
    115121
    116122    // Always return a value, even if false
     
    119125
    120126/** Post Counts ***************************************************************/
     127
     128/**
     129 * Update the topic count for a user
     130 *
     131 * @since bbPress (r5309)
     132 *
     133 * @param int $user_id
     134 * @param mixed $count
     135 * @return boolean
     136 */
     137function bbp_update_user_topic_count( $user_id = 0, $count = false ) {
     138
     139    // Validate user id
     140    $user_id = bbp_get_user_id( $user_id );
     141    if ( empty( $user_id ) ) {
     142        return false;
     143    }
     144
     145    // Just in time filtering of the user's topic count
     146    $count = apply_filters( 'bbp_update_user_topic_count', $count, $user_id );
     147
     148    // Bail if no count was passed
     149    if ( false === $count ) {
     150        return false;
     151    }
     152
     153    // Return the updated user option
     154    return update_user_option( $user_id, '_bbp_topic_count', $count );
     155}
     156
     157/**
     158 * Update the reply count for a user
     159 *
     160 * @since bbPress (r5309)
     161 *
     162 * @param int $user_id
     163 * @param mixed $count
     164 * @return boolean
     165 */
     166function bbp_update_user_reply_count( $user_id = 0, $count = false ) {
     167
     168    // Validate user id
     169    $user_id = bbp_get_user_id( $user_id );
     170    if ( empty( $user_id ) ) {
     171        return false;
     172    }
     173
     174    // Just in time filtering of the user's reply count
     175    $count = apply_filters( 'bbp_update_user_reply_count', $count, $user_id );
     176
     177    // Bail if no count was passed
     178    if ( false === $count ) {
     179        return false;
     180    }
     181
     182    // Return the updated user option
     183    return update_user_option( $user_id, '_bbp_reply_count', $count );
     184}
    121185
    122186/**
     
    146210     */
    147211    function bbp_get_user_topic_count( $user_id = 0, $integer = false ) {
    148 
     212 
    149213        // Validate user id
    150214        $user_id = bbp_get_user_id( $user_id );
    151         if ( empty( $user_id ) )
     215        if ( empty( $user_id ) ) {
    152216            return false;
     217        }
    153218
    154219        $count  = (int) get_user_option( '_bbp_topic_count', $user_id );
     
    187252        // Validate user id
    188253        $user_id = bbp_get_user_id( $user_id );
    189         if ( empty( $user_id ) )
     254        if ( empty( $user_id ) ) {
    190255            return false;
     256        }
    191257
    192258        $count  = (int) get_user_option( '_bbp_reply_count', $user_id );
    193         $filter = ( true === $integer ) ? 'bbp_get_user_topic_count_int' : 'bbp_get_user_topic_count';
     259        $filter = ( true === $integer ) ? 'bbp_get_user_reply_count_int' : 'bbp_get_user_reply_count';
    194260
    195261        return apply_filters( $filter, $count, $user_id );
     
    225291        // Validate user id
    226292        $user_id = bbp_get_user_id( $user_id );
    227         if ( empty( $user_id ) )
     293        if ( empty( $user_id ) ) {
    228294            return false;
     295        }
    229296
    230297        $topics  = bbp_get_user_topic_count( $user_id, true );
     
    250317    // Validate user id
    251318    $user_id = bbp_get_user_id( $user_id );
    252     if ( empty( $user_id ) )
    253         return false;
     319    if ( empty( $user_id ) ) {
     320        return false;
     321    }
    254322
    255323    // Set time to now if nothing is passed
    256     if ( empty( $time ) )
     324    if ( empty( $time ) ) {
    257325        $time = time();
     326    }
    258327
    259328    return update_user_option( $user_id, '_bbp_last_posted', $time );
     
    282351        // Validate user id
    283352        $user_id = bbp_get_user_id( $user_id );
    284         if ( empty( $user_id ) )
     353        if ( empty( $user_id ) ) {
    285354            return false;
     355        }
    286356
    287357        $time = get_user_option( '_bbp_last_posted', $user_id );
Note: See TracChangeset for help on using the changeset viewer.