[ Index ]

PHP Cross Reference of BuddyPress

title

Body

[close]

/src/bp-templates/bp-nouveau/includes/groups/ -> loader.php (source)

   1  <?php
   2  /**
   3   * BP Nouveau Groups
   4   *
   5   * @since 3.0.0
   6   * @version 6.0.0
   7   */
   8  
   9  // Exit if accessed directly.
  10  defined( 'ABSPATH' ) || exit;
  11  
  12  /**
  13   * Groups Loader class
  14   *
  15   * @since 3.0.0
  16   */
  17  class BP_Nouveau_Groups {
  18      /**
  19       * Constructor
  20       *
  21       * @since 3.0.0
  22       */
  23  	public function __construct() {
  24          $this->setup_globals();
  25          $this->includes();
  26          $this->setup_actions();
  27          $this->setup_filters();
  28      }
  29  
  30      /**
  31       * Globals
  32       *
  33       * @since 3.0.0
  34       */
  35  	protected function setup_globals() {
  36          $this->dir                   = trailingslashit( dirname( __FILE__ ) );
  37          $this->is_group_home_sidebar = false;
  38      }
  39  
  40      /**
  41       * Include needed files
  42       *
  43       * @since 3.0.0
  44       */
  45  	protected function includes() {
  46          require $this->dir . 'functions.php';
  47          require $this->dir . 'classes.php';
  48          require $this->dir . 'template-tags.php';
  49  
  50          // Test suite requires the AJAX functions early.
  51          if ( function_exists( 'tests_add_filter' ) ) {
  52              require $this->dir . 'ajax.php';
  53  
  54          // Load AJAX code only on AJAX requests.
  55          } else {
  56              add_action( 'admin_init', function() {
  57                  if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX && 0 === strpos( $_REQUEST['action'], 'groups_' ) ) {
  58                      require bp_nouveau()->groups->dir . 'ajax.php';
  59                  }
  60              } );
  61          }
  62      }
  63  
  64      /**
  65       * Register do_action() hooks
  66       *
  67       * @since 3.0.0
  68       */
  69  	protected function setup_actions() {
  70          if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
  71              add_action( 'groups_setup_nav', 'bp_nouveau_group_setup_nav' );
  72          }
  73  
  74          add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_groups_enqueue_scripts' );
  75  
  76          // Avoid Notices for BuddyPress Legacy Backcompat
  77          remove_action( 'bp_groups_directory_group_filter', 'bp_group_backcompat_create_nav_item', 1000 );
  78  
  79          // Register the Groups Notifications filters
  80          add_action( 'bp_nouveau_notifications_init_filters', 'bp_nouveau_groups_notification_filters' );
  81  
  82          // Actions to check whether we are in the Group's default front page sidebar
  83          add_action( 'dynamic_sidebar_before', array( $this, 'group_home_sidebar_set' ), 10, 1 );
  84          add_action( 'dynamic_sidebar_after', array( $this, 'group_home_sidebar_unset' ), 10, 1 );
  85  
  86          // Add a new nav item to settings to let users choose their group invites preferences
  87          if ( bp_is_active( 'friends' ) && ! bp_nouveau_groups_disallow_all_members_invites() ) {
  88              add_action( 'bp_settings_setup_nav', 'bp_nouveau_groups_invites_restriction_nav' );
  89          }
  90      }
  91  
  92      /**
  93       * Register add_filter() hooks
  94       *
  95       * @since 3.0.0
  96       * @since 6.0.0 Removes the BP Core number formatting filter on total groups count.
  97       */
  98  	protected function setup_filters() {
  99          add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_groups_register_scripts', 10, 1 );
 100          add_filter( 'bp_core_get_js_strings', 'bp_nouveau_groups_localize_scripts', 10, 1 );
 101          add_filter( 'groups_create_group_steps', 'bp_nouveau_group_invites_create_steps', 10, 1 );
 102  
 103          $buttons = array(
 104              'groups_leave_group',
 105              'groups_join_group',
 106              'groups_accept_invite',
 107              'groups_reject_invite',
 108              'groups_membership_requested',
 109              'groups_request_membership',
 110              'groups_group_membership',
 111          );
 112  
 113          foreach ( $buttons as $button ) {
 114              add_filter( 'bp_button_' . $button, 'bp_nouveau_ajax_button', 10, 5 );
 115          }
 116  
 117          // Add sections in the BP Template Pack panel of the customizer.
 118          add_filter( 'bp_nouveau_customizer_sections', 'bp_nouveau_groups_customizer_sections', 10, 1 );
 119  
 120          // Add settings into the Groups sections of the customizer.
 121          add_filter( 'bp_nouveau_customizer_settings', 'bp_nouveau_groups_customizer_settings', 10, 1 );
 122  
 123          // Add controls into the Groups sections of the customizer.
 124          add_filter( 'bp_nouveau_customizer_controls', 'bp_nouveau_groups_customizer_controls', 10, 1 );
 125  
 126          // Add the group's default front template to hieararchy if user enabled it (Enabled by default).
 127          add_filter( 'bp_groups_get_front_template', 'bp_nouveau_group_reset_front_template', 10, 2 );
 128  
 129          // Add a new nav item to settings to let users choose their group invites preferences
 130          if ( bp_is_active( 'friends' ) && ! bp_nouveau_groups_disallow_all_members_invites() ) {
 131              add_filter( 'bp_settings_admin_nav', 'bp_nouveau_groups_invites_restriction_admin_nav', 10, 1 );
 132          }
 133  
 134          // The number formatting is done into the `bp_nouveau_nav_count()` template tag.
 135          remove_filter( 'bp_get_total_group_count', 'bp_core_number_format' );
 136      }
 137  
 138      /**
 139       * Add filters to be sure the (BuddyPress) widgets display will be consistent
 140       * with the current group's default front page.
 141       *
 142       * @since 3.0.0
 143       *
 144       * @param string $sidebar_index The Sidebar identifier.
 145       */
 146  	public function group_home_sidebar_set( $sidebar_index = '' ) {
 147          if ( 'sidebar-buddypress-groups' !== $sidebar_index ) {
 148              return;
 149          }
 150  
 151          $this->is_group_home_sidebar = true;
 152  
 153          // Add needed filters.
 154          bp_nouveau_groups_add_home_widget_filters();
 155      }
 156  
 157      /**
 158       * Remove filters to be sure the (BuddyPress) widgets display will no more take
 159       * the current group displayed in account.
 160       *
 161       * @since 3.0.0
 162       *
 163       * @param string $sidebar_index The Sidebar identifier.
 164       */
 165  	public function group_home_sidebar_unset( $sidebar_index = '' ) {
 166          if ( 'sidebar-buddypress-groups' !== $sidebar_index ) {
 167              return;
 168          }
 169  
 170          $this->is_group_home_sidebar = false;
 171  
 172          // Remove no more needed filters.
 173          bp_nouveau_groups_remove_home_widget_filters();
 174      }
 175  }
 176  
 177  /**
 178   * Launch the Groups loader class.
 179   *
 180   * @since 3.0.0
 181   */
 182  function bp_nouveau_groups( $bp_nouveau = null ) {
 183      if ( is_null( $bp_nouveau ) ) {
 184          return;
 185      }
 186  
 187      $bp_nouveau->groups = new BP_Nouveau_Groups();
 188  }
 189  add_action( 'bp_nouveau_includes', 'bp_nouveau_groups', 10, 1 );


Generated: Tue Jun 2 01:01:29 2020 Cross-referenced by PHPXref 0.7.1