Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
06/04/2018 08:52:12 PM (7 years ago)
Author:
boonebgorges
Message:

Add data exporters for Groups component.

See #7820.

File:
1 edited

Legend:

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

    r12126 r12163  
    26392639}
    26402640add_action( 'groups_delete_group', 'bp_remove_group_type_on_group_delete' );
     2641
     2642/**
     2643 * Finds and exports group membership data associated with an email address.
     2644 *
     2645 * @since 4.0.0
     2646 *
     2647 * @param string $email_address  The user's email address.
     2648 * @param int    $page           Batch number.
     2649 * @return array An array of personal data.
     2650 */
     2651function bp_groups_memberships_personal_data_exporter( $email_address, $page ) {
     2652    $number = 20;
     2653
     2654    $email_address = trim( $email_address );
     2655
     2656    $data_to_export = array();
     2657
     2658    $user = get_user_by( 'email', $email_address );
     2659
     2660    if ( ! $user ) {
     2661        return array(
     2662            'data' => array(),
     2663            'done' => true,
     2664        );
     2665    }
     2666
     2667    $memberships = BP_Groups_Member::get_user_memberships( $user->ID, array(
     2668        'type'     => 'membership',
     2669        'page'     => $page,
     2670        'per_page' => $number,
     2671    ) );
     2672
     2673    foreach ( $memberships as $membership ) {
     2674        $group = groups_get_group( $membership->group_id );
     2675
     2676        $item_data = array(
     2677            array(
     2678                'name'  => __( 'Group Name', 'buddypress' ),
     2679                'value' => bp_get_group_name( $group ),
     2680            ),
     2681            array(
     2682                'name'  => __( 'Group URL', 'buddypress' ),
     2683                'value' => bp_get_group_permalink( $group ),
     2684            ),
     2685        );
     2686
     2687        if ( $membership->inviter_id ) {
     2688            $item_data[] = array(
     2689                'name'  => __( 'Invited By', 'buddypress' ),
     2690                'value' => bp_core_get_userlink( $membership->inviter_id ),
     2691            );
     2692        }
     2693
     2694        if ( $group->creator_id === $user->ID ) {
     2695            $group_role = __( 'Creator', 'buddypress' );
     2696        } elseif ( $membership->is_admin ) {
     2697            $group_role = __( 'Admin', 'buddypress' );
     2698        } elseif ( $membership->is_mod ) {
     2699            $group_role = __( 'Moderator', 'buddypress' );
     2700        } else {
     2701            $group_role = __( 'Member', 'buddypress' );
     2702        }
     2703
     2704        $item_data[] = array(
     2705            'name'  => __( 'Group Role', 'buddypress' ),
     2706            'value' => $group_role,
     2707        );
     2708
     2709        $item_data[] = array(
     2710            'name'  => __( 'Date Joined', 'buddypress' ),
     2711            'value' => $membership->date_modified,
     2712        );
     2713
     2714        $data_to_export[] = array(
     2715            'group_id'    => 'bp_groups_memberships',
     2716            'group_label' => __( 'Group Memberships', 'buddypress' ),
     2717            'item_id'     => "bp-group-membership-{$group->id}",
     2718            'data'        => $item_data,
     2719        );
     2720    }
     2721
     2722    // Tell core if we have more items to process.
     2723    $done = count( $memberships ) < $number;
     2724
     2725    return array(
     2726        'data' => $data_to_export,
     2727        'done' => $done,
     2728    );
     2729}
     2730
     2731/**
     2732 * Finds and exports data on pending group membership requests associated with an email address.
     2733 *
     2734 * @since 4.0.0
     2735 *
     2736 * @param string $email_address  The user's email address.
     2737 * @param int    $page           Batch number.
     2738 * @return array An array of personal data.
     2739 */
     2740function bp_groups_pending_requests_personal_data_exporter( $email_address, $page ) {
     2741    $number = 20;
     2742
     2743    $email_address = trim( $email_address );
     2744
     2745    $data_to_export = array();
     2746
     2747    $user = get_user_by( 'email', $email_address );
     2748
     2749    if ( ! $user ) {
     2750        return array(
     2751            'data' => array(),
     2752            'done' => true,
     2753        );
     2754    }
     2755
     2756    $requests = BP_Groups_Member::get_user_memberships( $user->ID, array(
     2757        'type'     => 'pending_request',
     2758        'page'     => $page,
     2759        'per_page' => $number,
     2760    ) );
     2761
     2762    foreach ( $requests as $request ) {
     2763        $group = groups_get_group( $request->group_id );
     2764
     2765        $item_data = array(
     2766            array(
     2767                'name'  => __( 'Group Name', 'buddypress' ),
     2768                'value' => bp_get_group_name( $group ),
     2769            ),
     2770            array(
     2771                'name'  => __( 'Group URL', 'buddypress' ),
     2772                'value' => bp_get_group_permalink( $group ),
     2773            ),
     2774            array(
     2775                'name'  => __( 'Date Sent', 'buddypress' ),
     2776                'value' => $request->date_modified,
     2777            ),
     2778        );
     2779
     2780        $data_to_export[] = array(
     2781            'group_id'    => 'bp_groups_pending_requests',
     2782            'group_label' => __( 'Pending Group Membership Requests', 'buddypress' ),
     2783            'item_id'     => "bp-group-pending-request-{$group->id}",
     2784            'data'        => $item_data,
     2785        );
     2786    }
     2787
     2788    // Tell core if we have more items to process.
     2789    $done = count( $requests ) < $number;
     2790
     2791    return array(
     2792        'data' => $data_to_export,
     2793        'done' => $done,
     2794    );
     2795}
     2796
     2797/**
     2798 * Finds and exports data on pending group invitations sent by a user associated with an email address.
     2799 *
     2800 * @since 4.0.0
     2801 *
     2802 * @param string $email_address  The user's email address.
     2803 * @param int    $page           Batch number.
     2804 * @return array An array of personal data.
     2805 */
     2806function bp_groups_pending_sent_invitations_personal_data_exporter( $email_address, $page ) {
     2807    $number = 20;
     2808
     2809    $email_address = trim( $email_address );
     2810
     2811    $data_to_export = array();
     2812
     2813    $user = get_user_by( 'email', $email_address );
     2814
     2815    if ( ! $user ) {
     2816        return array(
     2817            'data' => array(),
     2818            'done' => true,
     2819        );
     2820    }
     2821
     2822    $invitations = BP_Groups_Member::get_user_memberships( $user->ID, array(
     2823        'type'     => 'pending_sent_invitation',
     2824        'page'     => $page,
     2825        'per_page' => $number,
     2826    ) );
     2827
     2828    foreach ( $invitations as $invitation ) {
     2829        $group = groups_get_group( $invitation->group_id );
     2830
     2831        $item_data = array(
     2832            array(
     2833                'name'  => __( 'Group Name', 'buddypress' ),
     2834                'value' => bp_get_group_name( $group ),
     2835            ),
     2836            array(
     2837                'name'  => __( 'Group URL', 'buddypress' ),
     2838                'value' => bp_get_group_permalink( $group ),
     2839            ),
     2840            array(
     2841                'name'  => __( 'Sent To', 'buddypress' ),
     2842                'value' => bp_core_get_userlink( $invitation->user_id ),
     2843            ),
     2844            array(
     2845                'name'  => __( 'Date Sent', 'buddypress' ),
     2846                'value' => $invitation->date_modified,
     2847            ),
     2848        );
     2849
     2850        $data_to_export[] = array(
     2851            'group_id'    => 'bp_groups_pending_sent_invitations',
     2852            'group_label' => __( 'Pending Group Invitations (Sent)', 'buddypress' ),
     2853            'item_id'     => "bp-group-pending-sent-invitation-{$group->id}",
     2854            'data'        => $item_data,
     2855        );
     2856    }
     2857
     2858    // Tell core if we have more items to process.
     2859    $done = count( $invitations ) < $number;
     2860
     2861    return array(
     2862        'data' => $data_to_export,
     2863        'done' => $done,
     2864    );
     2865}
     2866
     2867/**
     2868 * Finds and exports data on pending group invitations received by a user associated with an email address.
     2869 *
     2870 * @since 4.0.0
     2871 *
     2872 * @param string $email_address  The user's email address.
     2873 * @param int    $page           Batch number.
     2874 * @return array An array of personal data.
     2875 */
     2876function bp_groups_pending_received_invitations_personal_data_exporter( $email_address, $page ) {
     2877    $number = 20;
     2878
     2879    $email_address = trim( $email_address );
     2880
     2881    $data_to_export = array();
     2882
     2883    $user = get_user_by( 'email', $email_address );
     2884
     2885    if ( ! $user ) {
     2886        return array(
     2887            'data' => array(),
     2888            'done' => true,
     2889        );
     2890    }
     2891
     2892    $invitations = BP_Groups_Member::get_user_memberships( $user->ID, array(
     2893        'type'     => 'pending_received_invitation',
     2894        'page'     => $page,
     2895        'per_page' => $number,
     2896    ) );
     2897
     2898    foreach ( $invitations as $invitation ) {
     2899        $group = groups_get_group( $invitation->group_id );
     2900
     2901        $item_data = array(
     2902            array(
     2903                'name'  => __( 'Group Name', 'buddypress' ),
     2904                'value' => bp_get_group_name( $group ),
     2905            ),
     2906            array(
     2907                'name'  => __( 'Group URL', 'buddypress' ),
     2908                'value' => bp_get_group_permalink( $group ),
     2909            ),
     2910            array(
     2911                'name'  => __( 'Invited By', 'buddypress' ),
     2912                'value' => bp_core_get_userlink( $invitation->inviter_id ),
     2913            ),
     2914            array(
     2915                'name'  => __( 'Date Sent', 'buddypress' ),
     2916                'value' => $invitation->date_modified,
     2917            ),
     2918        );
     2919
     2920        $data_to_export[] = array(
     2921            'group_id'    => 'bp_groups_pending_received_invitations',
     2922            'group_label' => __( 'Pending Group Invitations (Received)', 'buddypress' ),
     2923            'item_id'     => "bp-group-pending-received-invitation-{$group->id}",
     2924            'data'        => $item_data,
     2925        );
     2926    }
     2927
     2928    // Tell core if we have more items to process.
     2929    $done = count( $invitations ) < $number;
     2930
     2931    return array(
     2932        'data' => $data_to_export,
     2933        'done' => $done,
     2934    );
     2935}
Note: See TracChangeset for help on using the changeset viewer.