| | 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 | */ |
| | 121 | function 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 | } |