BP_Settings_Export
Class BP_Settings_Export
Description
Source
File: bp-core/gdpr/class-bp-settings-export.php
final class BP_Settings_Export extends BP_Export {
/**
* Get the instance of this class.
*
* @since BuddyBoss 1.0.0
*
* @return Controller|null
*/
public static function instance() {
static $instance = null;
if ( null === $instance ) {
$instance = new BP_Settings_Export();
$instance->setup( "bp_settings", __( 'Settings', 'buddyboss' ) );
}
return $instance;
}
/**
* Export member profile settings.
*
* @param $user
* @param $page
* @param bool $email_address
*
* @since BuddyBoss 1.0.0
*
* @return array
*/
function process_data( $user, $page, $email_address = false ) {
if ( ! $user || is_wp_error( $user ) ) {
return $this->response( array(), true );
}
$export_items = array();
$group_id = 'bp_settings';
$group_label = __( 'Settings', 'buddyboss' );
$item_id = "{$this->exporter_name}-{$group_id}";
/**
* Email Preferences
*/
$notification_settings = $this->get_notification_settings();
$notification_data = array();
foreach ( $notification_settings as $noti_key => $notification_label ) {
$value = bp_get_user_meta( $user->ID, $noti_key, true );
if ( empty( $value ) || 'yes' === $value ) {
if ( 'yes' === $value ) {
$value = __( 'Yes', 'buddyboss' );
} else {
$value = __( 'Yes (Default)', 'buddyboss' );
}
} else {
$value = __( 'No', 'buddyboss' );
}
$notification_data[] = array(
'name' => $notification_label,
'value' => $value,
);
}
$notification_data = apply_filters( 'buddyboss_bp_gdpr_notification_settings_after_data_prepare', $notification_data, $user );
$export_items[] = array(
'group_id' => $group_id . '_notification',
'group_label' => __( 'Email Preferences', 'buddyboss' ),
'item_id' => 'bp_notification_settings',
'data' => $notification_data,
);
$export_items = apply_filters( 'buddyboss_bp_gdpr_additional_settings', $export_items, $user );
$done = true;
return $this->response( $export_items, $done );
}
/**
* Delete user profile settings.
*
* @param $user
* @param $page
* @param bool $email_address
*
* @since BuddyBoss 1.0.0
*
* @return array
*/
function process_erase( $user, $page, $email_address ) {
if ( ! $user || is_wp_error( $user ) ) {
return $this->response_erase( array(), true );
}
$items_removed = true;
$items_retained = false;
$notification_settings = $this->get_notification_settings();
foreach ( $notification_settings as $noti_key => $notification_label ) {
bp_delete_user_meta( $user->ID, $noti_key );
}
/**
* @todo add title/description
*
* @since BuddyBoss 1.0.0
*/
do_action( 'buddyboss_bp_gdpr_delete_additional_settings', $user );
$done = true;
return $this->response_erase( $items_removed, $done, array(), $items_retained );
}
/**
* Fetch user settings.
*
* @since BuddyBoss 1.0.0
*
* @return array
*/
function get_notification_settings() {
$notification_settings = array();
if ( bp_is_active( 'activity' ) ) {
$notification_settings['notification_activity_new_mention'] = __( 'A member mentions you in an update using "@name"', 'buddyboss' );
$notification_settings['notification_activity_new_reply'] = __( 'A member replies to an update or comment you\'ve posted', 'buddyboss' );
}
if ( bp_is_active( 'messages' ) ) {
$notification_settings['notification_messages_new_message'] = __( 'A member sends you a new message ', 'buddyboss' );
}
if ( bp_is_active( 'friends' ) ) {
$notification_settings['notification_friends_friendship_request'] = __( 'A member invites you to connect', 'buddyboss' );
$notification_settings['notification_friends_friendship_accepted'] = __( 'A member accepts your connection request', 'buddyboss' );
}
if ( bp_is_active( 'groups' ) ) {
$notification_settings['notification_groups_invite'] = __( 'A member invites you to join a group', 'buddyboss' );
$notification_settings['notification_groups_group_updated'] = __( 'Group information is updated', 'buddyboss' );
$notification_settings['notification_groups_admin_promotion'] = __( 'You are promoted to a group organizer or moderator', 'buddyboss' );
$notification_settings['notification_groups_membership_request'] = __( 'A member requests to join a private group you organize', 'buddyboss' );
$notification_settings['notification_membership_request_completed'] = __( 'Your request to join a group has been approved or denied', 'buddyboss' );
}
return $notification_settings;
}
}
Methods
- get_notification_settings — Fetch user settings.
- instance — Get the instance of this class.
- process_data — Export member profile settings.
- process_erase — Delete user profile settings.
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.