Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/05/2016 04:55:58 AM (10 years ago)
Author:
boonebgorges
Message:

Move bp-groups classes to their own files.

See #6870.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/bp-groups-screens.php

    r10454 r10520  
    1414// Exit if accessed directly.
    1515defined( 'ABSPATH' ) || exit;
     16
     17require dirname( __FILE__ ) . '/classes/class-bp-groups-theme-compat.php';
    1618
    1719/**
     
    14761478/** Theme Compatibility *******************************************************/
    14771479
    1478 /**
    1479  * The main theme compat class for BuddyPress Groups.
    1480  *
    1481  * This class sets up the necessary theme compatibility actions to safely output
    1482  * group template parts to the_title and the_content areas of a theme.
    1483  *
    1484  * @since 1.7.0
    1485  */
    1486 class BP_Groups_Theme_Compat {
    1487 
    1488         /**
    1489          * Set up theme compatibility for the Groups component.
    1490          *
    1491          * @since 1.7.0
    1492          */
    1493         public function __construct() {
    1494                 add_action( 'bp_setup_theme_compat', array( $this, 'is_group' ) );
    1495         }
    1496 
    1497         /**
    1498          * Are we looking at something that needs group theme compatibility?
    1499          *
    1500          * @since 1.7.0
    1501          */
    1502         public function is_group() {
    1503 
    1504                 // Bail if not looking at a group.
    1505                 if ( ! bp_is_groups_component() )
    1506                         return;
    1507 
    1508                 // Group Directory.
    1509                 if ( ! bp_current_action() && ! bp_current_item() ) {
    1510                         bp_update_is_directory( true, 'groups' );
    1511 
    1512                         /**
    1513                          * Fires at the start of the group theme compatibility setup.
    1514                          *
    1515                          * @since 1.1.0
    1516                          */
    1517                         do_action( 'groups_directory_groups_setup' );
    1518 
    1519                         add_filter( 'bp_get_buddypress_template',                array( $this, 'directory_template_hierarchy' ) );
    1520                         add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'directory_dummy_post' ) );
    1521                         add_filter( 'bp_replace_the_content',                    array( $this, 'directory_content'    ) );
    1522 
    1523                 // Creating a group.
    1524                 } elseif ( bp_is_groups_component() && bp_is_current_action( 'create' ) ) {
    1525                         add_filter( 'bp_get_buddypress_template',                array( $this, 'create_template_hierarchy' ) );
    1526                         add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'create_dummy_post' ) );
    1527                         add_filter( 'bp_replace_the_content',                    array( $this, 'create_content'    ) );
    1528 
    1529                 // Group page.
    1530                 } elseif ( bp_is_single_item() ) {
    1531                         add_filter( 'bp_get_buddypress_template',                array( $this, 'single_template_hierarchy' ) );
    1532                         add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'single_dummy_post' ) );
    1533                         add_filter( 'bp_replace_the_content',                    array( $this, 'single_content'    ) );
    1534 
    1535                 }
    1536         }
    1537 
    1538         /** Directory *********************************************************/
    1539 
    1540         /**
    1541          * Add template hierarchy to theme compat for the group directory page.
    1542          *
    1543          * This is to mirror how WordPress has
    1544          * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.
    1545          *
    1546          * @since 1.8.0
    1547          *
    1548          * @param string $templates The templates from bp_get_theme_compat_templates().
    1549          * @return array $templates Array of custom templates to look for.
    1550          */
    1551         public function directory_template_hierarchy( $templates ) {
    1552 
    1553                 /**
    1554                  * Filters the Groups directory page template hierarchy based on priority.
    1555                  *
    1556                  * @since 1.8.0
    1557                  *
    1558                  * @param array $value Array of default template files to use.
    1559                  */
    1560                 $new_templates = apply_filters( 'bp_template_hierarchy_groups_directory', array(
    1561                         'groups/index-directory.php'
    1562                 ) );
    1563 
    1564                 // Merge new templates with existing stack.
    1565                 // @see bp_get_theme_compat_templates().
    1566                 $templates = array_merge( (array) $new_templates, $templates );
    1567 
    1568                 return $templates;
    1569         }
    1570 
    1571         /**
    1572          * Update the global $post with directory data.
    1573          *
    1574          * @since 1.7.0
    1575          */
    1576         public function directory_dummy_post() {
    1577                 bp_theme_compat_reset_post( array(
    1578                         'ID'             => 0,
    1579                         'post_title'     => bp_get_directory_title( 'groups' ),
    1580                         'post_author'    => 0,
    1581                         'post_date'      => 0,
    1582                         'post_content'   => '',
    1583                         'post_type'      => 'page',
    1584                         'post_status'    => 'publish',
    1585                         'is_page'        => true,
    1586                         'comment_status' => 'closed'
    1587                 ) );
    1588         }
    1589 
    1590         /**
    1591          * Filter the_content with the groups index template part.
    1592          *
    1593          * @since 1.7.0
    1594          */
    1595         public function directory_content() {
    1596                 return bp_buffer_template_part( 'groups/index', null, false );
    1597         }
    1598 
    1599         /** Create ************************************************************/
    1600 
    1601         /**
    1602          * Add custom template hierarchy to theme compat for the group create page.
    1603          *
    1604          * This is to mirror how WordPress has
    1605          * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.
    1606          *
    1607          * @since 1.8.0
    1608          *
    1609          * @param string $templates The templates from bp_get_theme_compat_templates().
    1610          * @return array $templates Array of custom templates to look for.
    1611          */
    1612         public function create_template_hierarchy( $templates ) {
    1613 
    1614                 /**
    1615                  * Filters the Groups create page template hierarchy based on priority.
    1616                  *
    1617                  * @since 1.8.0
    1618                  *
    1619                  * @param array $value Array of default template files to use.
    1620                  */
    1621                 $new_templates = apply_filters( 'bp_template_hierarchy_groups_create', array(
    1622                         'groups/index-create.php'
    1623                 ) );
    1624 
    1625                 // Merge new templates with existing stack.
    1626                 // @see bp_get_theme_compat_templates().
    1627                 $templates = array_merge( $new_templates, $templates );
    1628 
    1629                 return $templates;
    1630         }
    1631 
    1632         /**
    1633          * Update the global $post with create screen data.
    1634          *
    1635          * @since 1.7.0
    1636          */
    1637         public function create_dummy_post() {
    1638 
    1639                 $title = _x( 'Groups', 'Group creation page', 'buddypress' );
    1640 
    1641                 bp_theme_compat_reset_post( array(
    1642                         'ID'             => 0,
    1643                         'post_title'     => $title,
    1644                         'post_author'    => 0,
    1645                         'post_date'      => 0,
    1646                         'post_content'   => '',
    1647                         'post_type'      => 'page',
    1648                         'post_status'    => 'publish',
    1649                         'is_page'        => true,
    1650                         'comment_status' => 'closed'
    1651                 ) );
    1652         }
    1653 
    1654         /**
    1655          * Filter the_content with the create screen template part.
    1656          *
    1657          * @since 1.7.0
    1658          */
    1659         public function create_content() {
    1660                 return bp_buffer_template_part( 'groups/create', null, false );
    1661         }
    1662 
    1663         /** Single ************************************************************/
    1664 
    1665         /**
    1666          * Add custom template hierarchy to theme compat for group pages.
    1667          *
    1668          * This is to mirror how WordPress has
    1669          * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.
    1670          *
    1671          * @since 1.8.0
    1672          *
    1673          * @param string $templates The templates from bp_get_theme_compat_templates().
    1674          * @return array $templates Array of custom templates to look for.
    1675          */
    1676         public function single_template_hierarchy( $templates ) {
    1677                 // Setup some variables we're going to reference in our custom templates.
    1678                 $group = groups_get_current_group();
    1679 
    1680                 /**
    1681                  * Filters the Groups single pages template hierarchy based on priority.
    1682                  *
    1683                  * @since 1.8.0
    1684                  *
    1685                  * @param array $value Array of default template files to use.
    1686                  */
    1687                 $new_templates = apply_filters( 'bp_template_hierarchy_groups_single_item', array(
    1688                         'groups/single/index-id-'     . sanitize_file_name( bp_get_current_group_id() )   . '.php',
    1689                         'groups/single/index-slug-'   . sanitize_file_name( bp_get_current_group_slug() ) . '.php',
    1690                         'groups/single/index-action-' . sanitize_file_name( bp_current_action() )         . '.php',
    1691                         'groups/single/index-status-' . sanitize_file_name( $group->status )              . '.php',
    1692                         'groups/single/index.php'
    1693                 ) );
    1694 
    1695                 // Merge new templates with existing stack.
    1696                 // @see bp_get_theme_compat_templates().
    1697                 $templates = array_merge( (array) $new_templates, $templates );
    1698 
    1699                 return $templates;
    1700         }
    1701 
    1702         /**
    1703          * Update the global $post with single group data.
    1704          *
    1705          * @since 1.7.0
    1706          */
    1707         public function single_dummy_post() {
    1708                 bp_theme_compat_reset_post( array(
    1709                         'ID'             => 0,
    1710                         'post_title'     => bp_get_current_group_name(),
    1711                         'post_author'    => 0,
    1712                         'post_date'      => 0,
    1713                         'post_content'   => '',
    1714                         'post_type'      => 'page',
    1715                         'post_status'    => 'publish',
    1716                         'is_page'        => true,
    1717                         'comment_status' => 'closed'
    1718                 ) );
    1719         }
    1720 
    1721         /**
    1722          * Filter the_content with the single group template part.
    1723          *
    1724          * @since 1.7.0
    1725          */
    1726         public function single_content() {
    1727                 return bp_buffer_template_part( 'groups/single/home', null, false );
    1728         }
    1729 }
    17301480new BP_Groups_Theme_Compat();
Note: See TracChangeset for help on using the changeset viewer.