BP_Integration
API to create BuddyBoss Integration.
Description
Source
File: bp-core/classes/class-bp-integration.php
class BP_Integration {
/**
* Translatable name for the integration.
*
* @internal
*/
public $name = '';
/**
* Unique ID for the integration.
*
* @since BuddyBoss 1.0.0
*/
public $id = '';
/**
* Unique slug for the integration, for use in query strings and URLs.
*
* @since BuddyBoss 1.0.0
*/
public $slug = '';
/**
* The path to the integration's files.
*
* @since BuddyBoss 1.0.0
*/
public $path = '';
public function start( $id = '', $name = '', $path = '', $params = array() ) {
// Internal identifier of integration.
$this->id = $id;
// Internal integration name.
$this->name = $name;
// Path for includes.
$this->path = trailingslashit( buddypress()->integration_dir ) . $path;
$this->url = trailingslashit( buddypress()->integration_url ) . $path;
if ( $params ) {
if ( isset( $params['required_plugin'] ) ) {
$this->required_plugin = $params['required_plugin'];
}
}
$this->setup_actions();
}
public function setup_actions() {
add_action( 'bp_register_admin_integrations', array( $this, 'setup_admin_integration_tab' ) );
if ( $this->is_activated() ) {
$this->activation();
add_action( 'bp_include', array( $this, 'includes' ), 8 );
add_action( 'bp_late_include', array( $this, 'late_includes' ) );
}
}
public function is_activated() {
if ( ! $this->required_plugin ) {
return false;
}
$plugins = get_option( 'active_plugins' ) ?: [];
if ( in_array( $this->required_plugin, $plugins ) ) {
return true;
}
if ( ! is_multisite() ) {
return false;
}
$plugins = get_site_option( 'active_sitewide_plugins' ) ?: [];
return isset( $plugins[$this->required_plugin] );
}
public function activation() {
// place to put default value
}
public function setup_admin_integration_tab() {
if ( $this->admin_tab ) {
require_once trailingslashit( $this->path ) . $this->admin_tab;
}
}
public function includes( $includes = array() ) {
if ( empty( $includes ) ) {
return;
}
$slashed_path = trailingslashit( $this->path );
// Loop through files to be included.
foreach ( (array) $includes as $file ) {
$paths = array(
// Passed with no extension.
'bp-' . $this->id . '/bp-' . $this->id . '-' . $file . '.php',
'bp-' . $this->id . '-' . $file . '.php',
'bp-' . $this->id . '/' . $file . '.php',
// Passed with extension.
$file,
'bp-' . $this->id . '-' . $file,
'bp-' . $this->id . '/' . $file,
);
foreach ( $paths as $path ) {
if ( @is_file( $slashed_path . $path ) ) {
require( $slashed_path . $path );
break;
}
}
}
}
public function late_includes() {}
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.0.0 | Introduced. |
Methods
- activation
- includes
- is_activated
- late_includes
- rest_api_init — Init the BuddyBoss REST API.
- setup_actions
- setup_admin_integration_tab
- start
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.