Server : Apache System : Linux ls31.server.ly 3.10.0-962.3.2.lve1.5.68.el7.x86_64 #1 SMP Wed Apr 6 11:12:23 UTC 2022 x86_64 User : medchoco ( 2906) PHP Version : 8.3.16 Disable Function : mail Directory : /home/medchoco/www/wp-content/plugins/mailchimp-for-wp/integrations/buddypress/ |
Upload File : |
<?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' ); } }