Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
06/04/2018 08:02:30 PM (8 years ago)
Author:
boonebgorges
Message:

Add data exporters for Friends component.

See #7821.

File:
1 edited

Legend:

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

    r11693 r12160  
    898898}
    899899add_action( 'friends_friendship_accepted', 'friends_notification_accepted_request', 10, 3 );
     900
     901/**
     902 * Finds and exports friendship data associated with an email address.
     903 *
     904 * @since 4.0.0
     905 *
     906 * @param string $email_address  The user's email address.
     907 * @param int    $page           Batch number.
     908 * @return array An array of personal data.
     909 */
     910function bp_friends_personal_data_exporter( $email_address, $page ) {
     911        $number = 50;
     912
     913        $email_address = trim( $email_address );
     914
     915        $data_to_export = array();
     916
     917        $user = get_user_by( 'email', $email_address );
     918
     919        if ( ! $user ) {
     920                return array(
     921                        'data' => array(),
     922                        'done' => true,
     923                );
     924        }
     925
     926        $friendships = BP_Friends_Friendship::get_friendships( $user->ID, array(
     927                'is_confirmed' => true,
     928                'page'         => $page,
     929                'per_page'     => $number,
     930        ) );
     931
     932        $user_data_to_export = array();
     933
     934        foreach ( $friendships as $friendship ) {
     935                if ( (int) $user->ID === (int) $friendship->initiator_user_id ) {
     936                        $friend_id         = $friendship->friend_user_id;
     937                        $user_is_initiator = true;
     938                } else {
     939                        $friend_id         = $friendship->initiator_user_id;
     940                        $user_is_initiator = false;
     941                }
     942
     943                $item_data = array(
     944                        array(
     945                                'name'  => __( 'Friend', 'buddypress' ),
     946                                'value' => bp_core_get_userlink( $friend_id ),
     947                        ),
     948                        array(
     949                                'name'  => __( 'Initiated By Me', 'buddypress' ),
     950                                'value' => $user_is_initiator ? __( 'Yes', 'buddypress' ) : __( 'No', 'buddypress' ),
     951                        ),
     952                        array(
     953                                'name'  => __( 'Friendship Date', 'buddypress' ),
     954                                'value' => $friendship->date_created,
     955                        ),
     956                );
     957
     958                $data_to_export[] = array(
     959                        'group_id'    => 'bp_friends',
     960                        'group_label' => __( 'Friends', 'buddypress' ),
     961                        'item_id'     => "bp-friends-{$friend_id}",
     962                        'data'        => $item_data,
     963                );
     964        }
     965
     966        // Tell core if we have more items to process.
     967        $done = count( $friendships ) < $number;
     968
     969        return array(
     970                'data' => $data_to_export,
     971                'done' => $done,
     972        );
     973}
     974
     975/**
     976 * Finds and exports pending sent friendship request data associated with an email address.
     977 *
     978 * @since 4.0.0
     979 *
     980 * @param string $email_address  The user's email address.
     981 * @param int    $page           Batch number.
     982 * @return array An array of personal data.
     983 */
     984function bp_friends_pending_sent_requests_personal_data_exporter( $email_address, $page ) {
     985        $number = 50;
     986
     987        $email_address = trim( $email_address );
     988
     989        $data_to_export = array();
     990
     991        $user = get_user_by( 'email', $email_address );
     992
     993        if ( ! $user ) {
     994                return array(
     995                        'data' => array(),
     996                        'done' => true,
     997                );
     998        }
     999
     1000        $friendships = BP_Friends_Friendship::get_friendships( $user->ID, array(
     1001                'is_confirmed'      => false,
     1002                'initiator_user_id' => $user->ID,
     1003                'page'              => $page,
     1004                'per_page'          => $number,
     1005        ) );
     1006
     1007        $user_data_to_export = array();
     1008
     1009        foreach ( $friendships as $friendship ) {
     1010                $item_data = array(
     1011                        array(
     1012                                'name'  => __( 'Recipient', 'buddypress' ),
     1013                                'value' => bp_core_get_userlink( $friendship->friend_user_id ),
     1014                        ),
     1015                        array(
     1016                                'name'  => __( 'Date Sent', 'buddypress' ),
     1017                                'value' => $friendship->date_created,
     1018                        ),
     1019                );
     1020
     1021                $data_to_export[] = array(
     1022                        'group_id'    => 'bp_friends_pending_sent_requests',
     1023                        'group_label' => __( 'Pending Friend Requests (Sent)', 'buddypress' ),
     1024                        'item_id'     => "bp-friends-pending-sent-request-{$friendship->friend_user_id}",
     1025                        'data'        => $item_data,
     1026                );
     1027        }
     1028
     1029        // Tell core if we have more items to process.
     1030        $done = count( $friendships ) < $number;
     1031
     1032        return array(
     1033                'data' => $data_to_export,
     1034                'done' => $done,
     1035        );
     1036}
     1037
     1038/**
     1039 * Finds and exports pending received friendship request data associated with an email address.
     1040 *
     1041 * @since 4.0.0
     1042 *
     1043 * @param string $email_address  The user's email address.
     1044 * @param int    $page           Batch number.
     1045 * @return array An array of personal data.
     1046 */
     1047function bp_friends_pending_received_requests_personal_data_exporter( $email_address, $page ) {
     1048        $number = 50;
     1049
     1050        $email_address = trim( $email_address );
     1051
     1052        $data_to_export = array();
     1053
     1054        $user = get_user_by( 'email', $email_address );
     1055
     1056        if ( ! $user ) {
     1057                return array(
     1058                        'data' => array(),
     1059                        'done' => true,
     1060                );
     1061        }
     1062
     1063        $friendships = BP_Friends_Friendship::get_friendships( $user->ID, array(
     1064                'is_confirmed'   => false,
     1065                'friend_user_id' => $user->ID,
     1066                'page'           => $page,
     1067                'per_page'       => $number,
     1068        ) );
     1069
     1070        $user_data_to_export = array();
     1071
     1072        foreach ( $friendships as $friendship ) {
     1073                $item_data = array(
     1074                        array(
     1075                                'name'  => __( 'Requester', 'buddypress' ),
     1076                                'value' => bp_core_get_userlink( $friendship->initiator_user_id ),
     1077                        ),
     1078                        array(
     1079                                'name'  => __( 'Date Sent', 'buddypress' ),
     1080                                'value' => $friendship->date_created,
     1081                        ),
     1082                );
     1083
     1084                $data_to_export[] = array(
     1085                        'group_id'    => 'bp_friends_pending_received_requests',
     1086                        'group_label' => __( 'Pending Friend Requests (Received)', 'buddypress' ),
     1087                        'item_id'     => "bp-friends-pending-received-request-{$friendship->initiator_user_id}",
     1088                        'data'        => $item_data,
     1089                );
     1090        }
     1091
     1092        // Tell core if we have more items to process.
     1093        $done = count( $friendships ) < $number;
     1094
     1095        return array(
     1096                'data' => $data_to_export,
     1097                'done' => $done,
     1098        );
     1099}
Note: See TracChangeset for help on using the changeset viewer.