254 lines
5.8 KiB
PHP
254 lines
5.8 KiB
PHP
<?php
|
|
/**
|
|
* Integrations for buddypress
|
|
*
|
|
* @package PUM
|
|
* @copyright Copyright (c) 2023, Code Atlantic LLC
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Class PUM_BuddyPress_Integration
|
|
*/
|
|
class PUM_BuddyPress_Integration {
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public static function init() {
|
|
add_filter( 'pum_registered_conditions', [ __CLASS__, 'registered_conditions' ] );
|
|
add_filter( 'pum_condition_sort_order', [ __CLASS__, 'condition_sort_order' ] );
|
|
}
|
|
|
|
/**
|
|
* @param array $conditions
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function registered_conditions( $conditions = [] ) {
|
|
|
|
$conditions = array_merge(
|
|
$conditions,
|
|
[
|
|
// Add Additional Conditions
|
|
'is_buddypress' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is a BuddyPress Page', 'popup-maker' ),
|
|
'callback' => 'is_buddypress',
|
|
],
|
|
|
|
'bp_is_user' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is User Page', 'popup-maker' ),
|
|
'callback' => 'bp_is_user',
|
|
],
|
|
|
|
'bp_is_group' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Group Page', 'popup-maker' ),
|
|
'callback' => 'bp_is_group',
|
|
],
|
|
|
|
'bp_is_user_messages' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is User Messages Page', 'popup-maker' ),
|
|
'callback' => 'bp_is_user_messages',
|
|
],
|
|
|
|
'bp_is_activation_page' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Activation Page', 'popup-maker' ),
|
|
'callback' => 'bp_is_activation_page',
|
|
],
|
|
|
|
'bp_is_register_page' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Register Page', 'popup-maker' ),
|
|
'callback' => 'bp_is_register_page',
|
|
],
|
|
|
|
'bp_is_item_admin' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Item Admin', 'popup-maker' ),
|
|
'callback' => 'bp_is_item_admin',
|
|
],
|
|
|
|
'bp_is_item_mod' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Item Mod', 'popup-maker' ),
|
|
'callback' => 'bp_is_item_mod',
|
|
],
|
|
|
|
'bp_is_directory' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Directory', 'popup-maker' ),
|
|
'callback' => 'bp_is_directory',
|
|
],
|
|
'bp_is_current_component' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Current Component', 'popup-maker' ),
|
|
'fields' => [
|
|
'selected' => [
|
|
'type' => 'select',
|
|
'multiple' => true,
|
|
'as_array' => true,
|
|
'select2' => true,
|
|
'options' => self::component_option_list(),
|
|
'label' => __( 'Which components?' ),
|
|
],
|
|
],
|
|
'callback' => [ __CLASS__, 'bp_is_current_component' ],
|
|
],
|
|
|
|
'bp_is_current_action' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Current Action', 'popup-maker' ),
|
|
'fields' => [
|
|
'selected' => [
|
|
'type' => 'text',
|
|
'label' => __( 'Which actions?' ),
|
|
],
|
|
],
|
|
'callback' => [ __CLASS__, 'bp_is_current_action' ],
|
|
],
|
|
|
|
'bp_is_action_variable' => [
|
|
'group' => __( 'BuddyPress', 'buddypress' ),
|
|
'name' => __( 'BP: Is Action Variable', 'popup-maker' ),
|
|
'fields' => [
|
|
'selected' => [
|
|
'type' => 'text',
|
|
'label' => __( 'Which action variables?' ),
|
|
],
|
|
],
|
|
'callback' => [ __CLASS__, 'bp_is_action_variable' ],
|
|
],
|
|
|
|
]
|
|
);
|
|
|
|
return $conditions;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public static function component_option_list() {
|
|
global $bp;
|
|
|
|
$components = [];
|
|
|
|
foreach ( $bp->active_components as $component => $key ) {
|
|
$components[ $component ] = ucfirst( $component );
|
|
}
|
|
|
|
return $components;
|
|
}
|
|
|
|
/**
|
|
* Checks if the current page is the selected bp components.
|
|
*
|
|
* @param array $settings
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function bp_is_current_component( $settings = [] ) {
|
|
global $bp;
|
|
|
|
if ( empty( $settings['selected'] ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( ! is_array( $settings['selected'] ) ) {
|
|
$settings['selected'] = [ $settings['selected'] ];
|
|
}
|
|
|
|
$found = false;
|
|
|
|
foreach ( $settings['selected'] as $component ) {
|
|
if ( ! array_key_exists( $component, $bp->active_components ) ) {
|
|
continue;
|
|
}
|
|
|
|
if ( bp_is_current_component( $component ) ) {
|
|
$found = true;
|
|
}
|
|
}
|
|
|
|
return $found;
|
|
}
|
|
|
|
/**
|
|
* Checks if the current page is the selected bp action.
|
|
*
|
|
* @param array $settings
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function bp_is_current_action( $settings = [] ) {
|
|
|
|
if ( empty( $settings['selected'] ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( ! is_array( $settings['selected'] ) ) {
|
|
$settings['selected'] = array_map( 'trim', explode( ',', $settings['selected'] ) );
|
|
}
|
|
|
|
$found = false;
|
|
|
|
foreach ( $settings['selected'] as $action ) {
|
|
if ( bp_is_current_action( $action ) ) {
|
|
$found = true;
|
|
}
|
|
}
|
|
|
|
return $found;
|
|
}
|
|
|
|
|
|
/**
|
|
* Checks if the current page is the selected bp action variable.
|
|
*
|
|
* @param array $settings
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function bp_is_action_variable( $settings = [] ) {
|
|
|
|
if ( empty( $settings['selected'] ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( ! is_array( $settings['selected'] ) ) {
|
|
$settings['selected'] = array_map( 'trim', explode( ',', $settings['selected'] ) );
|
|
}
|
|
|
|
$found = false;
|
|
|
|
foreach ( $settings['selected'] as $variable ) {
|
|
if ( bp_is_action_variable( $variable ) ) {
|
|
$found = true;
|
|
}
|
|
}
|
|
|
|
return $found;
|
|
}
|
|
|
|
/**
|
|
* @param array $order
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function condition_sort_order( $order = [] ) {
|
|
$order[ __( 'BuddyPress', 'buddypress' ) ] = 5.756;
|
|
|
|
return $order;
|
|
}
|
|
|
|
}
|