Skip to:
Content

Ticket #7218: 7218.friends.patch

File 7218.friends.patch, 10.4 KB (added by r-a-y, 9 months ago)

For the Friends component - refreshed for 2.9. Also conditionally loads the activity code only if the Activity component is active.

  • src/bp-friends/bp-friends-activity.php

     
    3434 * @return WP_Error|bool|int See {@link bp_activity_add()}. 
    3535 */ 
    3636function friends_record_activity( $args = '' ) { 
    37  
    38         if ( ! bp_is_active( 'activity' ) ) { 
    39                 return false; 
    40         } 
    41  
    4237        $r = wp_parse_args( $args, array( 
    4338                'user_id'           => bp_loggedin_user_id(), 
    4439                'action'            => '', 
     
    7267 * @return bool True on success, false on failure. 
    7368 */ 
    7469function friends_delete_activity( $args ) { 
    75         if ( ! bp_is_active( 'activity' ) ) { 
    76                 return; 
    77         } 
    78  
    7970        bp_activity_delete_by_item_id( array( 
    8071                'component' => buddypress()->friends->id, 
    8172                'item_id'   => $args['item_id'], 
     
    9081 * @since 1.1.0 
    9182 */ 
    9283function friends_register_activity_actions() { 
    93  
    94         if ( !bp_is_active( 'activity' ) ) { 
    95                 return false; 
    96         } 
    97  
    9884        $bp = buddypress(); 
    9985 
    10086        // These two added in BP 1.6. 
     
    376362 * @param object|bool $friendship Optional Friendship object. 
    377363 */ 
    378364function bp_friends_friendship_accepted_activity( $friendship_id, $initiator_user_id, $friend_user_id, $friendship = false ) { 
    379         if ( ! bp_is_active( 'activity' ) ) { 
    380                 return; 
    381         } 
    382  
    383365        // Record in activity streams for the initiator. 
    384366        friends_record_activity( array( 
    385367                'user_id'           => $initiator_user_id, 
     
    398380 * @param int $user_id The ID of the user being deleted. 
    399381 */ 
    400382function bp_friends_delete_activity_on_user_delete( $user_id = 0 ) { 
    401         if ( ! bp_is_active( 'activity' ) ) { 
    402                 return; 
    403         } 
    404  
    405383        bp_activity_delete( array( 
    406384                'component'         => buddypress()->friends->id, 
    407385                'type'              => 'friendship_created', 
  • src/bp-friends/bp-friends-screens.php

     
    9494         */ 
    9595        bp_core_load_template( apply_filters( 'friends_template_requests', 'members/single/home' ) ); 
    9696} 
    97  
    98 /** 
    99  * Add Friends-related settings to the Settings > Notifications page. 
    100  * 
    101  * @since 1.0.0 
    102  */ 
    103 function friends_screen_notification_settings() { 
    104  
    105         if ( !$send_requests = bp_get_user_meta( bp_displayed_user_id(), 'notification_friends_friendship_request', true ) ) 
    106                 $send_requests   = 'yes'; 
    107  
    108         if ( !$accept_requests = bp_get_user_meta( bp_displayed_user_id(), 'notification_friends_friendship_accepted', true ) ) 
    109                 $accept_requests = 'yes'; ?> 
    110  
    111         <table class="notification-settings" id="friends-notification-settings"> 
    112                 <thead> 
    113                         <tr> 
    114                                 <th class="icon"></th> 
    115                                 <th class="title"><?php _ex( 'Friends', 'Friend settings on notification settings page', 'buddypress' ) ?></th> 
    116                                 <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> 
    117                                 <th class="no"><?php _e( 'No', 'buddypress' )?></th> 
    118                         </tr> 
    119                 </thead> 
    120  
    121                 <tbody> 
    122                         <tr id="friends-notification-settings-request"> 
    123                                 <td></td> 
    124                                 <td><?php _ex( 'A member sends you a friendship request', 'Friend settings on notification settings page', 'buddypress' ) ?></td> 
    125                                 <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_request]" id="notification-friends-friendship-request-yes" value="yes" <?php checked( $send_requests, 'yes', true ) ?>/><label for="notification-friends-friendship-request-yes" class="bp-screen-reader-text"><?php 
    126                                         /* translators: accessibility text */ 
    127                                         _e( 'Yes, send email', 'buddypress' ); 
    128                                 ?></label></td> 
    129                                 <td class="no"><input type="radio" name="notifications[notification_friends_friendship_request]" id="notification-friends-friendship-request-no" value="no" <?php checked( $send_requests, 'no', true ) ?>/><label for="notification-friends-friendship-request-no" class="bp-screen-reader-text"><?php 
    130                                         /* translators: accessibility text */ 
    131                                         _e( 'No, do not send email', 'buddypress' ); 
    132                                 ?></label></td> 
    133                         </tr> 
    134                         <tr id="friends-notification-settings-accepted"> 
    135                                 <td></td> 
    136                                 <td><?php _ex( 'A member accepts your friendship request', 'Friend settings on notification settings page', 'buddypress' ) ?></td> 
    137                                 <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_accepted]" id="notification-friends-friendship-accepted-yes" value="yes" <?php checked( $accept_requests, 'yes', true ) ?>/><label for="notification-friends-friendship-accepted-yes" class="bp-screen-reader-text"><?php 
    138                                         /* translators: accessibility text */ 
    139                                         _e( 'Yes, send email', 'buddypress' ); 
    140                                 ?></label></td> 
    141                                 <td class="no"><input type="radio" name="notifications[notification_friends_friendship_accepted]" id="notification-friends-friendship-accepted-no" value="no" <?php checked( $accept_requests, 'no', true ) ?>/><label for="notification-friends-friendship-accepted-no" class="bp-screen-reader-text"><?php 
    142                                         /* translators: accessibility text */ 
    143                                         _e( 'No, do not send email', 'buddypress' ); 
    144                                 ?></label></td> 
    145                         </tr> 
    146  
    147                         <?php 
    148  
    149                         /** 
    150                          * Fires after the last table row on the friends notification screen. 
    151                          * 
    152                          * @since 1.0.0 
    153                          */ 
    154                         do_action( 'friends_screen_notification_settings' ); ?> 
    155  
    156                 </tbody> 
    157         </table> 
    158  
    159 <?php 
    160 } 
    161 add_action( 'bp_notification_settings', 'friends_screen_notification_settings' ); 
  • new file src/bp-friends/bp-friends-settings.php

    new file mode 100644
    - +  
     1<?php 
     2/** 
     3 * BuddyPress Friends Settings Functions. 
     4 * 
     5 * These functions are used on a user's Settings page. 
     6 * 
     7 * @package BuddyPress 
     8 * @subpackage FriendsSettings 
     9 * @since 2.9.0 
     10 */ 
     11 
     12// Exit if accessed directly. 
     13defined( 'ABSPATH' ) || exit; 
     14 
     15/** 
     16 * Add Friends-related settings to the Settings > Notifications page. 
     17 * 
     18 * @since 1.0.0 
     19 */ 
     20function friends_screen_notification_settings() { 
     21        if ( !$send_requests = bp_get_user_meta( bp_displayed_user_id(), 'notification_friends_friendship_request', true ) ) 
     22                $send_requests   = 'yes'; 
     23        if ( !$accept_requests = bp_get_user_meta( bp_displayed_user_id(), 'notification_friends_friendship_accepted', true ) ) 
     24                $accept_requests = 'yes'; ?> 
     25 
     26        <table class="notification-settings" id="friends-notification-settings"> 
     27                <thead> 
     28                        <tr> 
     29                                <th class="icon"></th> 
     30                                <th class="title"><?php _ex( 'Friends', 'Friend settings on notification settings page', 'buddypress' ) ?></th> 
     31                                <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> 
     32                                <th class="no"><?php _e( 'No', 'buddypress' )?></th> 
     33                        </tr> 
     34                </thead> 
     35 
     36                <tbody> 
     37                        <tr id="friends-notification-settings-request"> 
     38                                <td></td> 
     39                                <td><?php _ex( 'A member sends you a friendship request', 'Friend settings on notification settings page', 'buddypress' ) ?></td> 
     40                                <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_request]" id="notification-friends-friendship-request-yes" value="yes" <?php checked( $send_requests, 'yes', true ) ?>/><label for="notification-friends-friendship-request-yes" class="bp-screen-reader-text"><?php 
     41                                        /* translators: accessibility text */ 
     42                                        _e( 'Yes, send email', 'buddypress' ); 
     43                                ?></label></td> 
     44                                <td class="no"><input type="radio" name="notifications[notification_friends_friendship_request]" id="notification-friends-friendship-request-no" value="no" <?php checked( $send_requests, 'no', true ) ?>/><label for="notification-friends-friendship-request-no" class="bp-screen-reader-text"><?php 
     45                                        /* translators: accessibility text */ 
     46                                        _e( 'No, do not send email', 'buddypress' ); 
     47                                ?></label></td> 
     48                        </tr> 
     49                        <tr id="friends-notification-settings-accepted"> 
     50                                <td></td> 
     51                                <td><?php _ex( 'A member accepts your friendship request', 'Friend settings on notification settings page', 'buddypress' ) ?></td> 
     52                                <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_accepted]" id="notification-friends-friendship-accepted-yes" value="yes" <?php checked( $accept_requests, 'yes', true ) ?>/><label for="notification-friends-friendship-accepted-yes" class="bp-screen-reader-text"><?php 
     53                                        /* translators: accessibility text */ 
     54                                        _e( 'Yes, send email', 'buddypress' ); 
     55                                ?></label></td> 
     56                                <td class="no"><input type="radio" name="notifications[notification_friends_friendship_accepted]" id="notification-friends-friendship-accepted-no" value="no" <?php checked( $accept_requests, 'no', true ) ?>/><label for="notification-friends-friendship-accepted-no" class="bp-screen-reader-text"><?php 
     57                                        /* translators: accessibility text */ 
     58                                        _e( 'No, do not send email', 'buddypress' ); 
     59                                ?></label></td> 
     60                        </tr> 
     61 
     62                        <?php 
     63                        /** 
     64                         * Fires after the last table row on the friends notification screen. 
     65                         * 
     66                         * @since 1.0.0 
     67                         */ 
     68                        do_action( 'friends_screen_notification_settings' ); ?> 
     69 
     70                </tbody> 
     71        </table> 
     72 
     73<?php 
     74} 
     75add_action( 'bp_notification_settings', 'friends_screen_notification_settings' ); 
  • src/bp-friends/classes/class-bp-friends-component.php

     
    4747        public function includes( $includes = array() ) { 
    4848                $includes = array( 
    4949                        'cache', 
    50                         'actions', 
    51                         'screens', 
    5250                        'filters', 
    53                         'activity', 
    5451                        'template', 
    5552                        'functions', 
    5653                        'widgets', 
    5754                ); 
    5855 
    5956                // Conditional includes. 
     57                if ( bp_is_active( 'activity' ) ) { 
     58                        $includes[] = 'activity'; 
     59                } 
    6060                if ( bp_is_active( 'notifications' ) ) { 
    6161                        $includes[] = 'notifications'; 
    6262                } 
    6363 
     64                if ( function_exists( 'tests_add_filter' ) ) { 
     65                        $includes[] = 'actions'; 
     66                        $includes[] = 'screens'; 
     67                } else { 
     68                        add_action( 'bp_setup_canonical_stack', array( $this, 'late_includes' ), 20 ); 
     69                } 
     70 
    6471                parent::includes( $includes ); 
    6572        } 
    6673 
    6774        /** 
     75         * Late includes method 
     76         * 
     77         * Only load up friend-specific action and screen code when on a friend page. 
     78         * 
     79         * @since 2.9.0 
     80         */ 
     81        public function late_includes() { 
     82                if ( bp_is_current_component( 'friends' ) ) { 
     83                        require $this->path . 'bp-friends/bp-friends-actions.php'; 
     84                        require $this->path . 'bp-friends/bp-friends-screens.php'; 
     85                } elseif ( bp_is_user_settings_notifications() ) { 
     86                        require $this->path . 'bp-friends/bp-friends-settings.php'; 
     87                } 
     88        } 
     89 
     90        /** 
    6891         * Set up bp-friends global settings. 
    6992         * 
    7093         * The BP_FRIENDS_SLUG constant is deprecated, and only used here for