Skip to:
Content

BuddyPress.org

Changeset 13273


Ignore:
Timestamp:
04/22/2022 05:42:45 AM (less than one hour ago)
Author:
imath
Message:

List the displayed user groups invites in member's front-end screen

As a site admin can view the displayed user groups invites, listed invites have to be the one of this user and not the ones of the site admin.

Adapt the Group Invites feature so that site admins can accept or reject on behalf of the displayed user the listed invites. These two actions made by an admin will generate a specific BP Email informing the user of it.

Props oztaser, dcavins, espellcaste

Closes https://github.com/buddypress/buddypress/pull/15
Fixes #8675

Location:
trunk/src
Files:
11 edited

Legend:

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

    r13201 r13273  
    39723972            'post_excerpt' => __( "Your membership request for the group \"{{group.name}}\" has been rejected.\n\nTo request membership again, visit: {{{group.url}}}", 'buddypress' ),
    39733973        ),
     3974        'groups-membership-request-accepted-by-admin' => array(
     3975            /* translators: do not remove {} brackets or translate its contents. */
     3976            'post_title'   => __( '[{{{site.name}}}] Membership request for group "{{group.name}}" accepted', 'buddypress' ),
     3977            /* translators: do not remove {} brackets or translate its contents. */
     3978            'post_content' => __( "An administrator accepted an invitation to join &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; on your behalf.\n\nIf you disagree with this, you can leave the group at anytime visiting your <a href=\"{{{leave-group.url}}}\">groups memberships page</a>.", 'buddypress' ),
     3979            /* translators: do not remove {} brackets or translate its contents. */
     3980            'post_excerpt' => __( "An administrator accepted an invitation to join \"{{group.name}}\" on your behalf.\n\nIf you disagree with this, you can leave the group at anytime visiting your groups memberships page: {{{leave-group.url}}}", 'buddypress' ),
     3981        ),
     3982        'groups-membership-request-rejected-by-admin' => array(
     3983            /* translators: do not remove {} brackets or translate its contents. */
     3984            'post_title'   => __( '[{{{site.name}}}] Membership request for group "{{group.name}}" rejected', 'buddypress' ),
     3985            /* translators: do not remove {} brackets or translate its contents. */
     3986            'post_content' => __( "An administrator rejected an invitation to join &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; on your behalf.\n\nIf you disagree with this, please contact the site administrator.", 'buddypress' ),
     3987            /* translators: do not remove {} brackets or translate its contents. */
     3988            'post_excerpt' => __( "An administrator rejected an invitation to join \"{{group.name}}\" on your behalf.\n\nIf you disagree with this, please contact the site administrator.", 'buddypress' ),
     3989        ),
    39743990        'bp-members-invitation' => array(
    39753991            /* translators: do not remove {} brackets or translate its contents. */
     
    41534169    );
    41544170
     4171    $groups_membership_request_accepted_by_admin = array(
     4172        'description'      => __( 'Recipient had requested to join a group, which was accepted by admin.', 'buddypress' ),
     4173        'named_salutation' => true,
     4174        'unsubscribe'      => false,
     4175    );
     4176
     4177    $groups_membership_request_rejected_by_admin = array(
     4178        'description'      => __( 'Recipient had requested to join a group, which was rejected by admin.', 'buddypress' ),
     4179        'named_salutation' => true,
     4180        'unsubscribe'      => false,
     4181    );
     4182
    41554183    $core_user_activation = array(
    41564184        'description'      => __( 'Recipient has successfully activated an account.', 'buddypress' ),
     
    41844212
    41854213    $types = array(
    4186         'activity-comment'                    => $activity_comment,
    4187         'activity-comment-author'             => $activity_comment_author,
    4188         'activity-at-message'                 => $activity_at_message,
    4189         'groups-at-message'                   => $groups_at_message,
    4190         'core-user-registration'              => $core_user_registration,
    4191         'core-user-registration-with-blog'    => $core_user_registration_with_blog,
    4192         'friends-request'                     => $friends_request,
    4193         'friends-request-accepted'            => $friends_request_accepted,
    4194         'groups-details-updated'              => $groups_details_updated,
    4195         'groups-invitation'                   => $groups_invitation,
    4196         'groups-member-promoted'              => $groups_member_promoted,
    4197         'groups-membership-request'           => $groups_membership_request,
    4198         'messages-unread'                     => $messages_unread,
    4199         'settings-verify-email-change'        => $settings_verify_email_change,
    4200         'groups-membership-request-accepted'  => $groups_membership_request_accepted,
    4201         'groups-membership-request-rejected'  => $groups_membership_request_rejected,
    4202         'core-user-activation'                => $core_user_activation,
    4203         'bp-members-invitation'               => $members_invitation,
    4204         'members-membership-request'          => $members_membership_request,
    4205         'members-membership-request-rejected' => $members_membership_request_rejected,
     4214        'activity-comment'                            => $activity_comment,
     4215        'activity-comment-author'                     => $activity_comment_author,
     4216        'activity-at-message'                         => $activity_at_message,
     4217        'groups-at-message'                           => $groups_at_message,
     4218        'core-user-registration'                      => $core_user_registration,
     4219        'core-user-registration-with-blog'            => $core_user_registration_with_blog,
     4220        'friends-request'                             => $friends_request,
     4221        'friends-request-accepted'                    => $friends_request_accepted,
     4222        'groups-details-updated'                      => $groups_details_updated,
     4223        'groups-invitation'                           => $groups_invitation,
     4224        'groups-member-promoted'                      => $groups_member_promoted,
     4225        'groups-membership-request'                   => $groups_membership_request,
     4226        'messages-unread'                             => $messages_unread,
     4227        'settings-verify-email-change'                => $settings_verify_email_change,
     4228        'groups-membership-request-accepted'          => $groups_membership_request_accepted,
     4229        'groups-membership-request-rejected'          => $groups_membership_request_rejected,
     4230        'core-user-activation'                        => $core_user_activation,
     4231        'bp-members-invitation'                       => $members_invitation,
     4232        'members-membership-request'                  => $members_membership_request,
     4233        'members-membership-request-rejected'         => $members_membership_request_rejected,
     4234        'groups-membership-request-accepted-by-admin' => $groups_membership_request_accepted_by_admin,
     4235        'groups-membership-request-rejected-by-admin' => $groups_membership_request_rejected_by_admin,
    42064236    );
    42074237
  • trunk/src/bp-core/bp-core-update.php

    r13168 r13273  
    283283        if ( $raw_db_version < 13165 ) {
    284284            bp_update_to_10_0();
     285        }
     286
     287        // Version 11.0.0.
     288        if ( $raw_db_version < 13271 ){
     289            bp_update_to_11_0();
    285290        }
    286291
     
    744749    if ( isset( $emails['members-membership-request-rejected'] ) ) {
    745750        $new_emails['members-membership-request-rejected'] = $emails['members-membership-request-rejected'];
     751    }
     752
     753    return $new_emails;
     754}
     755
     756/**
     757 * 11.0.0 update routine.
     758 *
     759 * - Install new BP Emails for group membership requests which is completed by admin.
     760 *
     761 * @since 11.0.0
     762 */
     763function bp_update_to_11_0() {
     764
     765    add_filter( 'bp_email_get_schema', 'bp_core_get_11_0_upgrade_email_schema' );
     766
     767    bp_core_install_emails();
     768
     769    remove_filter( 'bp_email_get_schema', 'bp_core_get_11_0_upgrade_email_schema' );
     770}
     771
     772/**
     773 * Select only the emails that need to be installed with version 11.0.
     774 *
     775 * @since 11.0.0
     776 *
     777 * @param array $emails The array of emails schema.
     778 */
     779function bp_core_get_11_0_upgrade_email_schema( $emails ) {
     780    $new_emails = array();
     781
     782    if ( isset( $emails['groups-membership-request-accepted-by-admin'] ) ) {
     783        $new_emails['groups-membership-request-accepted-by-admin'] = $emails['groups-membership-request-accepted-by-admin'];
     784    }
     785
     786    if ( isset( $emails['groups-membership-request-rejected-by-admin'] ) ) {
     787        $new_emails['groups-membership-request-rejected-by-admin'] = $emails['groups-membership-request-rejected-by-admin'];
    746788    }
    747789
  • trunk/src/bp-groups/bp-groups-notifications.php

    r13034 r13273  
    12231223}
    12241224add_action( 'bp_notification_settings', 'groups_screen_notification_settings' );
     1225
     1226/**
     1227 * Notify member about their group membership request accepted/rejected by admin.
     1228 *
     1229 * @since 11.0.0
     1230 *
     1231 * @param int $user_id  ID of the user requesting group membership.
     1232 * @param int $group_id ID of the group.
     1233 */
     1234function groups_email_notification_membership_request_completed_by_admin( $user_id, $group_id ) {
     1235    if ( (int) $user_id === bp_loggedin_user_id() ) {
     1236        return;
     1237    }
     1238
     1239    if ( false === bp_current_user_can( 'bp_moderate' ) ) {
     1240        return;
     1241    }
     1242
     1243    $group = groups_get_group( $group_id );
     1244    if ( true === empty( $group->id ) ) {
     1245        return;
     1246    }
     1247
     1248    $args = array(
     1249        'tokens' => array(
     1250            'group'           => $group,
     1251            'group.id'        => $group_id,
     1252            'group.name'      => $group->name,
     1253            'group.url'       => esc_url( bp_get_group_permalink( $group ) ),
     1254            'leave-group.url' => esc_url( bp_core_get_user_domain( $user_id ) . bp_get_groups_slug() ),
     1255        ),
     1256    );
     1257
     1258    $email_type = 'groups-membership-request-accepted-by-admin';
     1259    if ( true === doing_action( 'groups_reject_invite' ) ) {
     1260        unset( $args['tokens']['leave-group.url'] );
     1261        $email_type = 'groups-membership-request-rejected-by-admin';
     1262    }
     1263
     1264    bp_send_email( $email_type, (int) $user_id, $args );
     1265}
     1266add_action( 'groups_accept_invite', 'groups_email_notification_membership_request_completed_by_admin', 10, 2 );
     1267add_action( 'groups_reject_invite', 'groups_email_notification_membership_request_completed_by_admin', 10, 2 );
  • trunk/src/bp-groups/bp-groups-template.php

    r13267 r13273  
    33613361        }
    33623362
    3363         $bp = buddypress();
     3363        $user_domain = bp_loggedin_user_domain();
     3364        if ( bp_is_user() ) {
     3365            $user_domain = bp_displayed_user_domain();
     3366        }
    33643367
    33653368        /**
     
    33723375         * @param object $group Group object.
    33733376         */
    3374         return apply_filters( 'bp_get_group_accept_invite_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/accept/' . $group->id ), 'groups_accept_invite' ), $group );
     3377        return apply_filters( 'bp_get_group_accept_invite_link', wp_nonce_url( trailingslashit( $user_domain . bp_get_groups_slug() . '/invites/accept/' . $group->id ), 'groups_accept_invite' ), $group );
    33753378    }
    33763379
     
    33993402        }
    34003403
    3401         $bp = buddypress();
     3404        $user_domain = bp_loggedin_user_domain();
     3405        if ( bp_is_user() ) {
     3406            $user_domain = bp_displayed_user_domain();
     3407        }
    34023408
    34033409        /**
     
    34103416         * @param object $group Group object.
    34113417         */
    3412         return apply_filters( 'bp_get_group_reject_invite_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/reject/' . $group->id ), 'groups_reject_invite' ), $group );
     3418        return apply_filters( 'bp_get_group_reject_invite_link', wp_nonce_url( trailingslashit( $user_domain . bp_get_groups_slug() . '/invites/reject/' . $group->id ), 'groups_reject_invite' ), $group );
    34133419    }
    34143420
  • trunk/src/bp-groups/screens/user/invites.php

    r12590 r13273  
    1414 */
    1515function groups_screen_group_invites() {
    16     $group_id = (int)bp_action_variable( 1 );
     16    $group_id = (int) bp_action_variable( 1 );
    1717
    1818    if ( bp_is_action_variable( 'accept' ) && is_numeric( $group_id ) ) {
     
    2222        }
    2323
    24         if ( !groups_accept_invite( bp_loggedin_user_id(), $group_id ) ) {
     24        if ( ! groups_accept_invite( bp_displayed_user_id(), $group_id ) ) {
    2525            bp_core_add_message( __('Group invite could not be accepted', 'buddypress'), 'error' );
    2626        } else {
     
    4242            $redirect_to = urldecode( $_GET['redirect_to'] );
    4343        } else {
    44             $redirect_to = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() );
     44            $redirect_to = trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() );
    4545        }
    4646
     
    5252            return false;
    5353
    54         if ( !groups_reject_invite( bp_loggedin_user_id(), $group_id ) ) {
     54        if ( ! groups_reject_invite( bp_displayed_user_id(), $group_id ) ) {
    5555            bp_core_add_message( __( 'Group invite could not be rejected', 'buddypress' ), 'error' );
    5656        } else {
     
    6161            $redirect_to = urldecode( $_GET['redirect_to'] );
    6262        } else {
    63             $redirect_to = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() );
     63            $redirect_to = trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() );
    6464        }
    6565
  • trunk/src/bp-templates/bp-legacy/buddypress/members/single/groups.php

    r12082 r13273  
    55 * @package BuddyPress
    66 * @subpackage bp-legacy
    7  * @version 3.0.0
     7 * @version 11.0.0
    88 */
    9 
    109?>
    1110
    1211<div class="item-list-tabs no-ajax" id="subnav" aria-label="<?php esc_attr_e( 'Member secondary navigation', 'buddypress' ); ?>" role="navigation">
    1312    <ul>
    14         <?php if ( bp_is_my_profile() ) bp_get_options_nav(); ?>
     13        <?php bp_get_options_nav(); ?>
    1514
    16         <?php if ( !bp_is_current_action( 'invites' ) ) : ?>
     15        <?php if ( ! bp_is_current_action( 'invites' ) ) : ?>
    1716
    1817            <li id="groups-order-select" class="last filter">
    1918
    20                 <label for="groups-order-by"><?php _e( 'Order By:', 'buddypress' ); ?></label>
     19                <label for="groups-order-by"><?php esc_html_e( 'Order By:', 'buddypress' ); ?></label>
    2120                <select id="groups-order-by">
    22                     <option value="active"><?php _e( 'Last Active', 'buddypress' ); ?></option>
    23                     <option value="popular"><?php _e( 'Most Members', 'buddypress' ); ?></option>
    24                     <option value="newest"><?php _e( 'Newly Created', 'buddypress' ); ?></option>
    25                     <option value="alphabetical"><?php _e( 'Alphabetical', 'buddypress' ); ?></option>
     21                    <option value="active"><?php esc_html_e( 'Last Active', 'buddypress' ); ?></option>
     22                    <option value="popular"><?php esc_html_e( 'Most Members', 'buddypress' ); ?></option>
     23                    <option value="newest"><?php esc_html_e( 'Newly Created', 'buddypress' ); ?></option>
     24                    <option value="alphabetical"><?php esc_html_e( 'Alphabetical', 'buddypress' ); ?></option>
    2625
    2726                    <?php
     
    5958            <h2 class="bp-screen-reader-text"><?php
    6059                /* translators: accessibility text */
    61                 _e( 'My groups', 'buddypress' );
     60                esc_html_e( 'My groups', 'buddypress' );
    6261            ?></h2>
    6362        <?php else : ?>
    6463            <h2 class="bp-screen-reader-text"><?php
    6564                /* translators: accessibility text */
    66                 _e( 'Member\'s groups', 'buddypress' );
     65                esc_html_e( 'Member\'s groups', 'buddypress' );
    6766            ?></h2>
    6867        <?php endif; ?>
  • trunk/src/bp-templates/bp-legacy/buddypress/members/single/groups/invites.php

    r12595 r13273  
    55 * @package BuddyPress
    66 * @subpackage bp-legacy
    7  * @version 3.0.0
     7 * @version 11.0.0
    88 */
    99
     
    1515do_action( 'bp_before_group_invites_content' ); ?>
    1616
    17 <?php if ( bp_has_groups( 'type=invites&user_id=' . bp_loggedin_user_id() ) ) : ?>
     17<?php if ( bp_has_groups( 'type=invites&user_id=' . bp_displayed_user_id() ) ) : ?>
    1818
    1919    <h2 class="bp-screen-reader-text"><?php
    2020        /* translators: accessibility text */
    21         _e( 'Group invitations', 'buddypress' );
     21        esc_html_e( 'Group invitations', 'buddypress' );
    2222    ?></h2>
    2323
     
    7979
    8080    <div id="message" class="info">
    81         <p><?php _e( 'You have no outstanding group invites.', 'buddypress' ); ?></p>
     81        <p><?php esc_html_e( 'You have no outstanding group invites.', 'buddypress' ); ?></p>
    8282    </div>
    8383
  • trunk/src/bp-templates/bp-nouveau/buddypress/members/single/groups.php

    r12082 r13273  
    44 *
    55 * @since 3.0.0
    6  * @version 3.0.0
     6 * @version 11.0.0
    77 */
    88?>
     
    1111    <ul class="subnav">
    1212
    13         <?php if ( bp_is_my_profile() ) : ?>
    14 
    15             <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?>
    16 
    17         <?php endif; ?>
     13        <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?>
    1814
    1915    </ul>
     
    2117
    2218<?php if ( ! bp_is_current_action( 'invites' ) ) : ?>
    23 
    2419
    2520    <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?>
  • trunk/src/bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php

    r13185 r13273  
    44 *
    55 * @since 3.0.0
    6  * @version 3.1.0
     6 * @version 11.0.0
    77 */
    88?>
     
    1212<?php bp_nouveau_group_hook( 'before', 'invites_content' ); ?>
    1313
    14 <?php if ( bp_has_groups( 'type=invites&user_id=' . bp_loggedin_user_id() ) ) : ?>
     14<?php if ( bp_has_groups( 'type=invites&user_id=' . bp_displayed_user_id() ) ) : ?>
    1515
    1616    <ul id="group-list" class="invites item-list bp-list" data-bp-list="groups_invites">
  • trunk/src/bp-templates/bp-nouveau/includes/groups/ajax.php

    r13192 r13273  
    9898
    9999        case 'groups_accept_invite':
    100             if ( ! groups_check_user_has_invite( bp_loggedin_user_id(), $group_id ) ) {
     100            if ( ! groups_check_user_has_invite( bp_displayed_user_id(), $group_id ) ) {
    101101                wp_send_json_error( $response );
    102102            }
    103103
    104             if ( ! groups_accept_invite( bp_loggedin_user_id(), $group_id ) ) {
     104            if ( ! groups_accept_invite( bp_displayed_user_id(), $group_id ) ) {
    105105                $response = array(
    106106                    'feedback' => sprintf(
     
    138138
    139139        case 'groups_reject_invite':
    140             if ( ! groups_reject_invite( bp_loggedin_user_id(), $group_id ) ) {
     140            if ( ! groups_reject_invite( bp_displayed_user_id(), $group_id ) ) {
    141141                $response = array(
    142142                    'feedback' => sprintf(
  • trunk/src/class-buddypress.php

    r13238 r13273  
    351351
    352352        $this->version    = '11.0.0-alpha';
    353         $this->db_version = 13165;
     353        $this->db_version = 13271;
    354354
    355355        /** Loading */
Note: See TracChangeset for help on using the changeset viewer.