Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/05/2016 05:15:55 AM (8 years ago)
Author:
boonebgorges
Message:

Move bp-members classes to their own files.

See #6870.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-members/bp-members-template.php

    r10459 r10521  
    1212// Exit if accessed directly.
    1313defined( 'ABSPATH' ) || exit;
     14
     15require dirname( __FILE__ ) . '/classes/class-bp-core-members-template.php';
    1416
    1517/**
     
    282284        return apply_filters( 'bp_get_activate_slug', $slug );
    283285    }
    284 
    285 /**
    286  * The main member template loop class.
    287  *
    288  * Responsible for loading a group of members into a loop for display.
    289  */
    290 class BP_Core_Members_Template {
    291 
    292     /**
    293      * The loop iterator.
    294      *
    295      * @var int
    296      */
    297     public $current_member = -1;
    298 
    299     /**
    300      * The number of members returned by the paged query.
    301      *
    302      * @var int
    303      */
    304     public $member_count;
    305 
    306     /**
    307      * Array of members located by the query.
    308      *
    309      * @var array
    310      */
    311     public $members;
    312 
    313     /**
    314      * The member object currently being iterated on.
    315      *
    316      * @var object
    317      */
    318     public $member;
    319 
    320     /**
    321      * A flag for whether the loop is currently being iterated.
    322      *
    323      * @var bool
    324      */
    325     public $in_the_loop;
    326 
    327     /**
    328      * The type of member being requested. Used for ordering results.
    329      *
    330      * @var string
    331      */
    332     public $type;
    333 
    334     /**
    335      * The unique string used for pagination queries.
    336      *
    337      * @var string
    338      */
    339     public $pag_arg;
    340 
    341     /**
    342      * The page number being requested.
    343      *
    344      * @var string
    345      */
    346     public $pag_page;
    347 
    348     /**
    349      * The number of items being requested per page.
    350      *
    351      * @var string
    352      */
    353     public $pag_num;
    354 
    355     /**
    356      * An HTML string containing pagination links.
    357      *
    358      * @var string
    359      */
    360     public $pag_links;
    361 
    362     /**
    363      * The total number of members matching the query parameters.
    364      *
    365      * @var int
    366      */
    367     public $total_member_count;
    368 
    369     /**
    370      * Constructor method.
    371      *
    372      * @see BP_User_Query for an in-depth description of parameters.
    373      *
    374      * @param string       $type                Sort order.
    375      * @param int          $page_number         Page of results.
    376      * @param int          $per_page            Number of results per page.
    377      * @param int          $max                 Max number of results to return.
    378      * @param int          $user_id             Limit to friends of a user.
    379      * @param string       $search_terms        Limit to users matching search terms.
    380      * @param array        $include             Limit results by these user IDs.
    381      * @param bool         $populate_extras     Fetch optional extras.
    382      * @param array        $exclude             Exclude these IDs from results.
    383      * @param array        $meta_key            Limit to users with a meta_key.
    384      * @param array        $meta_value          Limit to users with a meta_value (with meta_key).
    385      * @param string       $page_arg            Optional. The string used as a query parameter in pagination links.
    386      *                                          Default: 'upage'.
    387      * @param array|string $member_type         Array or comma-separated string of member types to limit results to.
    388      * @param array|string $member_type__in     Array or comma-separated string of member types to limit results to.
    389      * @param array|string $member_type__not_in Array or comma-separated string of member types to exclude
    390      *                                          from results.
    391      */
    392     function __construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value, $page_arg = 'upage', $member_type = '', $member_type__in = '', $member_type__not_in = '' ) {
    393 
    394         $this->pag_arg  = sanitize_key( $page_arg );
    395         $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $page_number );
    396         $this->pag_num  = bp_sanitize_pagination_arg( 'num',          $per_page    );
    397         $this->type     = $type;
    398 
    399         if ( !empty( $_REQUEST['letter'] ) )
    400             $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude );
    401         else
    402             $this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'include' => $include, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras, 'exclude' => $exclude, 'meta_key' => $meta_key, 'meta_value' => $meta_value, 'member_type' => $member_type, 'member_type__in' => $member_type__in, 'member_type__not_in' => $member_type__not_in ) );
    403 
    404         if ( !$max || $max >= (int) $this->members['total'] )
    405             $this->total_member_count = (int) $this->members['total'];
    406         else
    407             $this->total_member_count = (int) $max;
    408 
    409         $this->members = $this->members['users'];
    410 
    411         if ( $max ) {
    412             if ( $max >= count( $this->members ) ) {
    413                 $this->member_count = count( $this->members );
    414             } else {
    415                 $this->member_count = (int) $max;
    416             }
    417         } else {
    418             $this->member_count = count( $this->members );
    419         }
    420 
    421         if ( (int) $this->total_member_count && (int) $this->pag_num ) {
    422             $pag_args = array(
    423                 $this->pag_arg => '%#%',
    424             );
    425 
    426             if ( defined( 'DOING_AJAX' ) && true === (bool) DOING_AJAX ) {
    427                 $base = remove_query_arg( 's', wp_get_referer() );
    428             } else {
    429                 $base = '';
    430             }
    431 
    432             /**
    433              * Defaults to an empty array to make sure paginate_links()
    434              * won't add the $page_arg to the links which would break
    435              * pagination in case JavaScript is disabled.
    436              */
    437             $add_args = array();
    438 
    439             if ( ! empty( $search_terms ) ) {
    440                 $query_arg = bp_core_get_component_search_query_arg( 'members' );
    441                 $add_args[ $query_arg ] = urlencode( $search_terms );
    442             }
    443 
    444             $this->pag_links = paginate_links( array(
    445                 'base'      => add_query_arg( $pag_args, $base ),
    446                 'format'    => '',
    447                 'total'     => ceil( (int) $this->total_member_count / (int) $this->pag_num ),
    448                 'current'   => (int) $this->pag_page,
    449                 'prev_text' => _x( '←', 'Member pagination previous text', 'buddypress' ),
    450                 'next_text' => _x( '→', 'Member pagination next text', 'buddypress' ),
    451                 'mid_size'  => 1,
    452                 'add_args'  => $add_args,
    453             ) );
    454         }
    455     }
    456 
    457     /**
    458      * Whether there are members available in the loop.
    459      *
    460      * @see bp_has_members()
    461      *
    462      * @return bool True if there are items in the loop, otherwise false.
    463      */
    464     function has_members() {
    465         if ( $this->member_count )
    466             return true;
    467 
    468         return false;
    469     }
    470 
    471     /**
    472      * Set up the next member and iterate index.
    473      *
    474      * @return object The next member to iterate over.
    475      */
    476     function next_member() {
    477         $this->current_member++;
    478         $this->member = $this->members[$this->current_member];
    479 
    480         return $this->member;
    481     }
    482 
    483     /**
    484      * Rewind the members and reset member index.
    485      */
    486     function rewind_members() {
    487         $this->current_member = -1;
    488         if ( $this->member_count > 0 ) {
    489             $this->member = $this->members[0];
    490         }
    491     }
    492 
    493     /**
    494      * Whether there are members left in the loop to iterate over.
    495      *
    496      * This method is used by {@link bp_members()} as part of the while loop
    497      * that controls iteration inside the members loop, eg:
    498      *     while ( bp_members() ) { ...
    499      *
    500      * @see bp_members()
    501      *
    502      * @return bool True if there are more members to show, otherwise false.
    503      */
    504     function members() {
    505         if ( $this->current_member + 1 < $this->member_count ) {
    506             return true;
    507         } elseif ( $this->current_member + 1 == $this->member_count ) {
    508 
    509             /**
    510              * Fires right before the rewinding of members listing.
    511              *
    512              * @since 1.5.0
    513              */
    514             do_action('member_loop_end');
    515             // Do some cleaning up after the loop.
    516             $this->rewind_members();
    517         }
    518 
    519         $this->in_the_loop = false;
    520         return false;
    521     }
    522 
    523     /**
    524      * Set up the current member inside the loop.
    525      *
    526      * Used by {@link bp_the_member()} to set up the current member data
    527      * while looping, so that template tags used during that iteration make
    528      * reference to the current member.
    529      *
    530      * @see bp_the_member()
    531      */
    532     function the_member() {
    533 
    534         $this->in_the_loop = true;
    535         $this->member      = $this->next_member();
    536 
    537         // Loop has just started.
    538         if ( 0 == $this->current_member ) {
    539 
    540             /**
    541              * Fires if the current member is the first in the loop.
    542              *
    543              * @since 1.5.0
    544              */
    545             do_action( 'member_loop_start' );
    546         }
    547 
    548     }
    549 }
    550 
    551 /**
    552  * Rewind the members and reset member index.
    553  */
    554 function bp_rewind_members() {
    555     global $members_template;
    556 
    557     return $members_template->rewind_members();
    558 }
    559286
    560287/**
Note: See TracChangeset for help on using the changeset viewer.