File "class-buddypress-20250117063428.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/mailchimp-for-wp/integrations/buddypress/class-buddypress-20250117063428.php
File size: 5.36 KB
MIME-type: text/x-php
Charset: utf-8
<?php
defined('ABSPATH') or exit;
/**
* Class MC4WP_BuddyPress_Integration
*
* @ignore
*/
class MC4WP_BuddyPress_Integration extends MC4WP_User_Integration
{
/**
* @var string
*/
public $name = 'BuddyPress';
/**
* @var string
*/
public $description = 'Subscribes users from BuddyPress registration forms.';
/**
* Add hooks
*/
public function add_hooks()
{
if (! $this->options['implicit']) {
add_action('bp_before_registration_submit_buttons', array( $this, 'output_checkbox' ), 20);
}
if (is_multisite()) {
/**
* Multisite signups are a two-stage process - the data is first added to
* the 'signups' table and then converted into an actual user during the
* activation process.
*
* To avoid all signups being subscribed to the Mailchimp list until they
* have responded to the activation email, a value is stored in the signup
* usermeta data which is retrieved on activation and acted upon.
*/
add_filter('bp_signup_usermeta', array( $this, 'store_usermeta' ), 10, 1);
add_action('bp_core_activated_user', array( $this, 'subscribe_from_usermeta' ), 10, 3);
} else {
add_action('bp_core_signup_user', array( $this, 'subscribe_from_form' ), 10, 4);
}
/**
* There is one further issue to consider, which is that many BuddyPress
* installs have a user moderation plugin (e.g. BP Registration Options)
* installed. This is because email activation on itself is sometimes not enough to ensure
* that user signups are not spammers. There should therefore be a way for
* plugins to delay the Mailchimp signup process.
*
* Plugins can hook into the 'mc4wp_integration_buddypress_should_subscribe' filter to prevent
* subscriptions from taking place:
*
* add_filter( 'mc4wp_integration_buddypress_should_subscribe', '__return_false' );
*
* The plugin would then then call:
*
* do_action( 'mc4wp_integration_buddypress_subscribe_user', $user_id );
*
* to perform the subscription at a later point.
*/
add_action('mc4wp_integration_buddypress_subscribe_user', array( $this, 'subscribe_buddypress_user' ), 10, 1);
}
/**
* Subscribes from BuddyPress Registration Form.
*
* @param int $user_id
* @param string $user_login
* @param string $user_password
* @param string $user_email
* @return bool
*/
public function subscribe_from_form($user_id, $user_login, $user_password, $user_email)
{
if (! $this->triggered()) {
return false;
}
$subscribe = true;
/**
* Allow other plugins to prevent the Mailchimp sign-up.
*
* @param bool $subscribe False does not subscribe the user.
* @param int $user_id The user ID to subscribe
*/
$subscribe = apply_filters('mc4wp_integration_buddypress_should_subscribe', $subscribe, $user_id);
if (! $subscribe) {
return false;
}
return $this->subscribe_buddypress_user($user_id);
}
/**
* Stores subscription data from BuddyPress Registration Form.
*
* @param array $usermeta The existing usermeta
* @return array $usermeta The modified usermeta
*/
public function store_usermeta($usermeta)
{
// only add meta if triggered (checked)
if ($this->triggered()) {
$usermeta['mc4wp_subscribe'] = '1';
}
return $usermeta;
}
/**
* Subscribes from BuddyPress Activation.
*
* @param int $user_id The activated user ID
* @param string $key the activation key (not used)
* @param array $userdata An array containing the activated user data
* @return bool
*/
public function subscribe_from_usermeta($user_id, $key, $userdata)
{
// sanity check
if (empty($user_id)) {
return false;
}
// bail if our usermeta key is not switched on
$meta = ( isset($userdata['meta']) ) ? $userdata['meta'] : array();
if (empty($meta['mc4wp_subscribe'])) {
return false;
}
$subscribe = true;
/**
* @ignore Documented elsewhere, see MC4WP_BuddyPress_Integration::subscribe_from_form.
*/
$subscribe = apply_filters('mc4wp_integration_buddypress_should_subscribe', $subscribe, $user_id);
if (! $subscribe) {
return false;
}
return $this->subscribe_buddypress_user($user_id);
}
/**
* Subscribes a user to Mailchimp list(s).
*
* @param int $user_id The user ID to subscribe
* @return bool
*/
public function subscribe_buddypress_user($user_id)
{
$user = get_userdata($user_id);
// was a user found with the given ID?
if (! $user instanceof WP_User) {
return false;
}
// gather email address and name from user
$data = $this->user_merge_vars($user);
return $this->subscribe($data, $user_id);
}
/* End BuddyPress functions */
/**
* @return bool
*/
public function is_installed()
{
return class_exists('BuddyPress');
}
}