Skip to:
Content

BuddyPress.org

Changeset 12159


Ignore:
Timestamp:
06/04/2018 08:01:09 PM (20 months ago)
Author:
boonebgorges
Message:

Add data exporter for Settings component.

See #7823.

Location:
trunk/src/bp-settings
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-settings/bp-settings-functions.php

    r11241 r12159  
    109109    return $key_whitelist;
    110110}
     111
     112/**
     113 * Finds and exports personal data associated with an email address from the Settings component.
     114 *
     115 * @since 4.0.0
     116 *
     117 * @param string $email_address  The user's email address.
     118 * @param int    $page           Batch number.
     119 * @return array An array of personal data.
     120 */
     121function bp_settings_personal_data_exporter( $email_address, $page ) {
     122    $email_address = trim( $email_address );
     123
     124    $data_to_export = array();
     125
     126    $user = get_user_by( 'email', $email_address );
     127
     128    if ( ! $user ) {
     129        return array(
     130            'data' => array(),
     131            'done' => true,
     132        );
     133    }
     134
     135    $yes = __( 'Yes', 'buddypress' );
     136    $no  = __( 'No', 'buddypress' );
     137
     138    $user_settings = array();
     139
     140    // These settings all default to 'yes' when nothing is saved, so we have to do some pre-processing.
     141    $notification_settings = array();
     142
     143    if ( bp_is_active( 'activity' ) ) {
     144        $notification_settings[] = array(
     145            'name' => __( 'Receive email when a member mentions you in an update?', 'buddypress' ),
     146            'key'  => 'notification_activity_new_mention',
     147        );
     148        $notification_settings[] = array(
     149            'name' => __( 'Receive email when a member replies to an update or comment you\'ve posted?', 'buddypress' ),
     150            'key'  => 'notification_activity_new_reply',
     151        );
     152    }
     153
     154    if ( bp_is_active( 'messages' ) ) {
     155        $notification_settings[] = array(
     156            'name' => __( 'Receive email when a member sends you a new message?', 'buddypress' ),
     157            'key'  => 'notification_messages_new_message',
     158        );
     159    }
     160
     161    if ( bp_is_active( 'friends' ) ) {
     162        $notification_settings[] = array(
     163            'name' => __( 'Receive email when a member invites you to join a group?', 'buddypress' ),
     164            'key'  => 'notification_groups_invite',
     165        );
     166    }
     167
     168    if ( bp_is_active( 'groups' ) ) {
     169        $notification_settings[] = array(
     170            'name' => __( 'Receive email when group information is updated?', 'buddypress' ),
     171            'key'  => 'notification_groups_group_updated',
     172        );
     173        $notification_settings[] = array(
     174            'name' => __( 'Receive email when you are promoted to a group administrator or moderator?', 'buddypress' ),
     175            'key'  => 'notification_groups_admin_promoted',
     176        );
     177        $notification_settings[] = array(
     178            'name' => __( 'Receive email when a member requests to join a private group for which you are an admin?', 'buddypress' ),
     179            'key'  => 'notification_groups_membership_request',
     180        );
     181        $notification_settings[] = array(
     182            'name' => __( 'Receive email when your request to join a group has been approved or denied?', 'buddypress' ),
     183            'key'  => 'notification_membership_request_completed',
     184        );
     185    }
     186
     187    foreach ( $notification_settings as $notification_setting ) {
     188        $user_notification_setting = bp_get_user_meta( $user->ID, $notification_setting['key'], true );
     189        if ( empty( $user_notification_setting ) ) {
     190            $user_notification_setting = 'yes';
     191        }
     192
     193        $user_settings[] = array(
     194            'name'  => $notification_setting['name'],
     195            'value' => 'yes' === $user_notification_setting ? $yes : $no,
     196        );
     197    }
     198
     199    if ( function_exists( 'bp_nouveau_groups_get_group_invites_setting' ) ) {
     200        $user_settings[] = array(
     201            'name'  => __( 'Receive group invitations from my friends only?', 'buddypress' ),
     202            'value' => bp_nouveau_groups_get_group_invites_setting() ? $yes : $no,
     203        );
     204    }
     205
     206    $data_to_export[] = array(
     207        'group_id'    => 'bp_settings',
     208        'group_label' => __( 'Settings', 'buddypress' ),
     209        'item_id'     => "bp-settings-{$user->ID}",
     210        'data'        => $user_settings,
     211    );
     212
     213    return array(
     214        'data' => $data_to_export,
     215        'done' => true,
     216    );
     217}
  • trunk/src/bp-settings/classes/class-bp-settings-component.php

    r12088 r12159  
    4444        parent::includes( array(
    4545            'template',
     46            'filters',
    4647            'functions',
    4748        ) );
Note: See TracChangeset for help on using the changeset viewer.