Skip to:
Content

bbPress.org


Ignore:
Timestamp:
11/17/2017 08:12:24 PM (7 years ago)
Author:
johnjamesjacoby
Message:

Engagements: include BBP_User_Engagements_Term class, as term storage example.

This change includes an alternative storage mechanism for engagements. Meta is used by default, but using Taxonomies and Terms for storage instead may be more appealing to certain installation types.

A few related functions were updated to use newer abstractions. See #459.

File:
1 edited

Legend:

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

    r6723 r6739  
    142142    // Filter & return
    143143    return (bool) apply_filters( 'bbp_is_object_of_user', $retval, $object_id, $user_id, $rel_key, $rel_type );
     144}
     145
     146/**
     147 * Get the query part responsible for JOINing objects to user IDs
     148 *
     149 * @since 2.6.0 bbPress (r6747)
     150 *
     151 * @param array  $args
     152 * @param string $context
     153 * @param string $meta_key
     154 * @param string $meta_type
     155 *
     156 * @return array
     157 */
     158function bbp_get_user_object_query( $args = array(), $context = '', $meta_key = '', $meta_type = 'post' ) {
     159    $retval = bbp_user_engagements_interface()->get_query( $args, "get_user_{$context}", $meta_key, $meta_type );
     160
     161    // Filter & return
     162    return (array) apply_filters( 'bbp_get_user_object_query', $retval, $args, $context, $meta_key, $meta_type );
    144163}
    145164
     
    215234 */
    216235function bbp_get_user_engagements( $args = array() ) {
    217 
    218     // Backwards compat for pre-2.6.0
    219     if ( is_numeric( $args ) ) {
    220         $args = array(
    221             'meta_query' => array( array(
    222                 'key'     => '_bbp_engagement',
    223                 'value'   => bbp_get_user_id( $args, false, false ),
    224                 'compare' => 'NUMERIC'
    225             ) )
    226         );
    227     }
    228 
    229     // Default arguments
    230     $defaults = array(
    231         'meta_query' => array( array(
    232             'key'     => '_bbp_engagement',
    233             'value'   => bbp_get_displayed_user_id(),
    234             'compare' => 'NUMERIC'
    235         ) )
    236     );
    237 
    238     // Parse arguments
    239     $r = bbp_parse_args( $args, $defaults, 'get_user_engagements' );
    240 
    241     // Get the topics
    242     $query   = bbp_has_topics( $r );
    243     $user_id = isset( $r['meta_query'][0]['value'] )
    244         ? $r['meta_query'][0]['value']
    245         : 0;
    246 
    247     // Filter & return
    248     return apply_filters( 'bbp_get_user_engagements', $query, $user_id, $r, $args );
     236    $r     = bbp_get_user_object_query( $args, 'engagements', '_bbp_engagement' );
     237    $query = bbp_has_topics( $r );
     238
     239    // Filter & return
     240    return apply_filters( 'bbp_get_user_engagements', $query, 0, $r, $args );
    249241}
    250242
     
    465457 */
    466458function bbp_get_user_favorites( $args = array() ) {
    467 
    468     // Backwards compat for pre-2.6.0
    469     if ( is_numeric( $args ) ) {
    470         $args = array(
    471             'meta_query' => array( array(
    472                 'key'     => '_bbp_favorite',
    473                 'value'   => bbp_get_user_id( $args, false, false ),
    474                 'compare' => 'NUMERIC'
    475             ) )
    476         );
    477     }
    478 
    479     // Default arguments
    480     $defaults = array(
    481         'meta_query' => array( array(
    482             'key'     => '_bbp_favorite',
    483             'value'   => bbp_get_displayed_user_id(),
    484             'compare' => 'NUMERIC'
    485         ) )
    486     );
    487 
    488     // Parse arguments
    489     $r = bbp_parse_args( $args, $defaults, 'get_user_favorites' );
    490 
    491     // Get the topics
    492     $query   = bbp_has_topics( $r );
    493         $user_id = isset( $r['meta_query'][0]['value'] )
    494         ? $r['meta_query'][0]['value']
    495         : 0;
    496 
    497     // Filter & return
    498     return apply_filters( 'bbp_get_user_favorites', $query, $user_id, $r, $args );
     459    $r     = bbp_get_user_object_query( $args, 'favorites', '_bbp_favorite' );
     460    $query = bbp_has_topics( $r );
     461
     462    // Filter & return
     463    return apply_filters( 'bbp_get_user_favorites', $query, 0, $r, $args );
    499464}
    500465
     
    605570
    606571    // Bail if no topic ID is passed
    607     if ( empty( $_GET['topic_id'] ) ) {
     572    if ( empty( $_GET['object_id'] ) ) {
    608573        return $success;
    609574    }
     
    621586
    622587    // What action is taking place?
    623     $topic_id = bbp_get_topic_id( $_GET['topic_id'] );
     588    $topic_id = bbp_get_topic_id( $_GET['object_id'] );
    624589    $user_id  = bbp_get_user_id( 0, true, true );
    625590
     
    710675 */
    711676function bbp_get_user_topic_subscriptions( $args = array() ) {
    712 
    713     // Backwards compat for pre-2.6.0
    714     if ( is_numeric( $args ) ) {
    715         $args = array(
    716             'meta_query' => array( array(
    717                 'key'     => '_bbp_subscription',
    718                 'value'   => bbp_get_user_id( $args, false, false ),
    719                 'compare' => 'NUMERIC'
    720             ) )
    721         );
    722     }
    723 
    724     // Default arguments
    725     $defaults = array(
    726         'meta_query' => array( array(
    727             'key'     => '_bbp_subscription',
    728             'value'   => bbp_get_displayed_user_id(),
    729             'compare' => 'NUMERIC'
    730         ) )
    731     );
    732 
    733     // Parse arguments
    734     $r = bbp_parse_args( $args, $defaults, 'get_user_topic_subscriptions' );
    735 
    736     // Get the topics
    737     $query   = bbp_has_topics( $r );
    738     $user_id = isset( $r['meta_query'][0]['value'] )
    739         ? $r['meta_query'][0]['value']
    740         : 0;
    741 
    742     // Filter & return
    743     return apply_filters( 'bbp_get_user_topic_subscriptions', $query, $user_id, $r, $args );
     677    $r     = bbp_get_user_object_query( $args, 'topic_subscriptions', '_bbp_subscription' );
     678    $query = bbp_has_topics( $r );
     679
     680    // Filter & return
     681    return apply_filters( 'bbp_get_user_topic_subscriptions', $query, 0, $r, $args );
    744682}
    745683
     
    755693 */
    756694function bbp_get_user_forum_subscriptions( $args = array() ) {
    757 
    758     // Backwards compat for pre-2.6.0
    759     if ( is_numeric( $args ) ) {
    760         $args = array(
    761             'meta_query' => array( array(
    762                 'key'     => '_bbp_subscription',
    763                 'value'   => bbp_get_user_id( $args, false, false ),
    764                 'compare' => 'NUMERIC'
    765             ) )
    766         );
    767     }
    768 
    769     // Default arguments
    770     $defaults = array(
    771         'meta_query' => array( array(
    772             'key'     => '_bbp_subscription',
    773             'value'   => bbp_get_displayed_user_id(),
    774             'compare' => 'NUMERIC'
    775         ) )
    776     );
    777 
    778     // Parse arguments
    779     $r = bbp_parse_args( $args, $defaults, 'get_user_forum_subscriptions' );
    780 
    781     // Get the forums
    782     $query   = bbp_has_forums( $r );
    783     $user_id = isset( $r['meta_query'][0]['value'] )
    784         ? $r['meta_query'][0]['value']
    785         : 0;
    786 
    787     // Filter & return
    788     return apply_filters( 'bbp_get_user_forum_subscriptions', $query, $user_id, $r, $args );
     695    $r     = bbp_get_user_object_query( $args, 'forum_subscriptions', '_bbp_subscription' );
     696    $query = bbp_has_forums( $r );
     697
     698    // Filter & return
     699    return apply_filters( 'bbp_get_user_forum_subscriptions', $query, 0, $r, $args );
    789700}
    790701
Note: See TracChangeset for help on using the changeset viewer.