Changeset 10521 for trunk/src/bp-members/bp-members-screens.php
- Timestamp:
- 02/05/2016 05:15:55 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-members/bp-members-screens.php
r10487 r10521 12 12 // Exit if accessed directly. 13 13 defined( 'ABSPATH' ) || exit; 14 15 require dirname( __FILE__ ) . '/classes/class-bp-members-theme-compat.php'; 16 require dirname( __FILE__ ) . '/classes/class-bp-registration-theme-compat.php'; 14 17 15 18 /** … … 382 385 /** Theme Compatibility *******************************************************/ 383 386 384 /**385 * The main theme compat class for BuddyPress Members.386 *387 * This class sets up the necessary theme compatibility actions to safely output388 * member template parts to the_title and the_content areas of a theme.389 *390 * @since 1.7.0391 */392 class BP_Members_Theme_Compat {393 394 /**395 * Set up the members component theme compatibility.396 *397 * @since 1.7.0398 */399 public function __construct() {400 add_action( 'bp_setup_theme_compat', array( $this, 'is_members' ) );401 }402 403 /**404 * Are we looking at something that needs members theme compatibility?405 *406 * @since 1.7.0407 */408 public function is_members() {409 410 // Bail if not looking at the members component or a user's page.411 if ( ! bp_is_members_component() && ! bp_is_user() ) {412 return;413 }414 415 // Members Directory.416 if ( ! bp_current_action() && ! bp_current_item() ) {417 bp_update_is_directory( true, 'members' );418 419 /**420 * Fires if looking at Members directory when needing theme compat.421 *422 * @since 1.5.0423 */424 do_action( 'bp_members_screen_index' );425 426 add_filter( 'bp_get_buddypress_template', array( $this, 'directory_template_hierarchy' ) );427 add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'directory_dummy_post' ) );428 add_filter( 'bp_replace_the_content', array( $this, 'directory_content' ) );429 430 // User page.431 } elseif ( bp_is_user() ) {432 433 // If we're on a single activity permalink page, we shouldn't use the members434 // template, so stop here!435 if ( bp_is_active( 'activity' ) && bp_is_single_activity() ) {436 return;437 }438 439 /**440 * Fires if looking at Members user page when needing theme compat.441 *442 * @since 1.5.0443 */444 do_action( 'bp_members_screen_display_profile' );445 446 add_filter( 'bp_get_buddypress_template', array( $this, 'single_template_hierarchy' ) );447 add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'single_dummy_post' ) );448 add_filter( 'bp_replace_the_content', array( $this, 'single_dummy_content' ) );449 450 }451 }452 453 /** Directory *************************************************************/454 455 /**456 * Add template hierarchy to theme compat for the members directory page.457 *458 * This is to mirror how WordPress has459 * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.460 *461 * @since 1.8.0462 *463 * @param array $templates The templates from bp_get_theme_compat_templates().464 * @return array $templates Array of custom templates to look for.465 */466 public function directory_template_hierarchy( $templates = array() ) {467 468 // Set up the template hierarchy.469 $new_templates = array();470 if ( '' !== bp_get_current_member_type() ) {471 $new_templates[] = 'members/index-directory-type-' . sanitize_file_name( bp_get_current_member_type() ) . '.php';472 }473 $new_templates[] = 'members/index-directory.php';474 475 /**476 * Filters the template hierarchy for theme compat and members directory page.477 *478 * @since 1.8.0479 *480 * @param array $value Array of template paths to add to hierarchy.481 */482 $new_templates = apply_filters( 'bp_template_hierarchy_members_directory', $new_templates );483 484 // Merge new templates with existing stack485 // @see bp_get_theme_compat_templates().486 $templates = array_merge( (array) $new_templates, $templates );487 488 return $templates;489 }490 491 /**492 * Update the global $post with directory data.493 *494 * @since 1.7.0495 */496 public function directory_dummy_post() {497 bp_theme_compat_reset_post( array(498 'ID' => 0,499 'post_title' => bp_get_directory_title( 'members' ),500 'post_author' => 0,501 'post_date' => 0,502 'post_content' => '',503 'post_type' => 'page',504 'post_status' => 'publish',505 'is_page' => true,506 'comment_status' => 'closed'507 ) );508 }509 510 /**511 * Filter the_content with the members index template part.512 *513 * @since 1.7.0514 */515 public function directory_content() {516 return bp_buffer_template_part( 'members/index', null, false );517 }518 519 /** Single ****************************************************************/520 521 /**522 * Add custom template hierarchy to theme compat for member pages.523 *524 * This is to mirror how WordPress has525 * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.526 *527 * @since 1.8.0528 *529 * @param string $templates The templates from530 * bp_get_theme_compat_templates().531 * @return array $templates Array of custom templates to look for.532 */533 public function single_template_hierarchy( $templates ) {534 // Setup some variables we're going to reference in our custom templates.535 $user_nicename = buddypress()->displayed_user->userdata->user_nicename;536 537 /**538 * Filters the template hierarchy for theme compat and member pages.539 *540 * @since 1.8.0541 *542 * @param array $value Array of template paths to add to hierarchy.543 */544 $new_templates = apply_filters( 'bp_template_hierarchy_members_single_item', array(545 'members/single/index-id-' . sanitize_file_name( bp_displayed_user_id() ) . '.php',546 'members/single/index-nicename-' . sanitize_file_name( $user_nicename ) . '.php',547 'members/single/index-action-' . sanitize_file_name( bp_current_action() ) . '.php',548 'members/single/index-component-' . sanitize_file_name( bp_current_component() ) . '.php',549 'members/single/index.php'550 ) );551 552 // Merge new templates with existing stack553 // @see bp_get_theme_compat_templates().554 $templates = array_merge( (array) $new_templates, $templates );555 556 return $templates;557 }558 559 /**560 * Update the global $post with the displayed user's data.561 *562 * @since 1.7.0563 */564 public function single_dummy_post() {565 bp_theme_compat_reset_post( array(566 'ID' => 0,567 'post_title' => bp_get_displayed_user_fullname(),568 'post_author' => 0,569 'post_date' => 0,570 'post_content' => '',571 'post_type' => 'page',572 'post_status' => 'publish',573 'is_page' => true,574 'comment_status' => 'closed'575 ) );576 }577 578 /**579 * Filter the_content with the members' single home template part.580 *581 * @since 1.7.0582 */583 public function single_dummy_content() {584 return bp_buffer_template_part( 'members/single/home', null, false );585 }586 }587 387 new BP_Members_Theme_Compat(); 588 589 /**590 * The main theme compat class for BuddyPress Registration.591 *592 * This class sets up the necessary theme compatibility actions to safely output593 * registration template parts to the_title and the_content areas of a theme.594 *595 * @since 1.7.0596 */597 class BP_Registration_Theme_Compat {598 599 /**600 * Setup the groups component theme compatibility.601 *602 * @since 1.7.0603 */604 public function __construct() {605 add_action( 'bp_setup_theme_compat', array( $this, 'is_registration' ) );606 }607 608 /**609 * Are we looking at either the registration or activation pages?610 *611 * @since 1.7.0612 */613 public function is_registration() {614 615 // Bail if not looking at the registration or activation page.616 if ( ! bp_is_register_page() && ! bp_is_activation_page() ) {617 return;618 }619 620 // Not a directory.621 bp_update_is_directory( false, 'register' );622 623 // Setup actions.624 add_filter( 'bp_get_buddypress_template', array( $this, 'template_hierarchy' ) );625 add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'dummy_post' ) );626 add_filter( 'bp_replace_the_content', array( $this, 'dummy_content' ) );627 }628 629 /** Template ***********************************************************/630 631 /**632 * Add template hierarchy to theme compat for registration/activation pages.633 *634 * This is to mirror how WordPress has635 * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.636 *637 * @since 1.8.0638 *639 * @param string $templates The templates from bp_get_theme_compat_templates().640 * @return array $templates Array of custom templates to look for.641 */642 public function template_hierarchy( $templates ) {643 $component = sanitize_file_name( bp_current_component() );644 645 /**646 * Filters the template hierarchy for theme compat and registration/activation pages.647 *648 * This filter is a variable filter that depends on the current component649 * being used.650 *651 * @since 1.8.0652 *653 * @param array $value Array of template paths to add to hierarchy.654 */655 $new_templates = apply_filters( "bp_template_hierarchy_{$component}", array(656 "members/index-{$component}.php"657 ) );658 659 // Merge new templates with existing stack660 // @see bp_get_theme_compat_templates().661 $templates = array_merge( (array) $new_templates, $templates );662 663 return $templates;664 }665 666 /**667 * Update the global $post with dummy data.668 *669 * @since 1.7.0670 */671 public function dummy_post() {672 // Registration page.673 if ( bp_is_register_page() ) {674 $title = __( 'Create an Account', 'buddypress' );675 676 if ( 'completed-confirmation' == bp_get_current_signup_step() ) {677 $title = __( 'Check Your Email To Activate Your Account!', 'buddypress' );678 }679 680 // Activation page.681 } else {682 $title = __( 'Activate Your Account', 'buddypress' );683 684 if ( bp_account_was_activated() ) {685 $title = __( 'Account Activated', 'buddypress' );686 }687 }688 689 bp_theme_compat_reset_post( array(690 'ID' => 0,691 'post_title' => $title,692 'post_author' => 0,693 'post_date' => 0,694 'post_content' => '',695 'post_type' => 'page',696 'post_status' => 'publish',697 'is_page' => true,698 'comment_status' => 'closed'699 ) );700 }701 702 /**703 * Filter the_content with either the register or activate templates.704 *705 * @since 1.7.0706 */707 public function dummy_content() {708 if ( bp_is_register_page() ) {709 return bp_buffer_template_part( 'members/register', null, false );710 } else {711 return bp_buffer_template_part( 'members/activate', null, false );712 }713 }714 }715 388 new BP_Registration_Theme_Compat();
Note: See TracChangeset
for help on using the changeset viewer.