Skip to:
Content

BuddyPress.org

Ticket #9131: 9131.patch

File 9131.patch, 18.8 KB (added by chinteshprajapati, 6 months ago)

Code Refinement for Improved Efficiency in the Activity Module

  • class-bp-activity-activity.php

     
    349349         * @since 10.0.0 Introduced the `$count_total_only` parameter.
    350350         * @since 11.0.0 Introduced the `$user_id__in` and `$user_id__not_in` parameters.
    351351         *
    352          * @see BP_Activity_Activity::get_filter_sql() for a description of the
     352         * @see self::get_filter_sql() for a description of the
    353353         *      'filter' parameter.
    354354         * @see WP_Meta_Query::queries for a description of the 'meta_query'
    355355         *      parameter format.
     
    373373         *                                           WP_Date_Query::__construct().
    374374         *     @type array        $filter_query      Array of advanced query conditions. See BP_Activity_Query::__construct().
    375375         *     @type string|array $scope             Pre-determined set of activity arguments.
    376          *     @type array        $filter            See BP_Activity_Activity::get_filter_sql().
     376         *     @type array        $filter            See self::get_filter_sql().
    377377         *     @type array        $user_id__in       An array of user ids to include. Activity posted by users matching one of these
    378378         *                                           user ids will be included in results. Default empty array.
    379379         *     @type array        $user_id__not_in   An array of user ids to exclude. Activity posted by users matching one of these
     
    493493                }
    494494
    495495                // Regular filtering.
    496                 if ( $r['filter'] && $filter_sql = BP_Activity_Activity::get_filter_sql( $r['filter'] ) ) {
     496                if ( $r['filter'] && $filter_sql = self::get_filter_sql( $r['filter'] ) ) {
    497497                        $where_conditions['filter_sql'] = $filter_sql;
    498498                }
    499499
     
    682682                $join_sql = apply_filters( 'bp_activity_get_join_sql', $join_sql, $r, $select_sql, $from_sql, $where_sql );
    683683
    684684                // Sanitize page and per_page parameters.
    685                 $page     = absint( $r['page']     );
     685                $page     = absint( $r['page'] );
    686686                $per_page = absint( $r['per_page'] );
    687687
    688688                $retval = array(
     
    826826                        }
    827827
    828828                        if ( $activities && $r['display_comments'] ) {
    829                                 $activities = BP_Activity_Activity::append_comments( $activities, $r['spam'] );
     829                                $activities = self::append_comments( $activities, $r['spam'] );
    830830                        }
    831831
    832832                        // Pre-fetch data associated with activity users and other objects.
    833                         BP_Activity_Activity::prefetch_object_data( $activities );
     833                        self::prefetch_object_data( $activities );
    834834
    835835                        // Generate action strings.
    836                         $activities = BP_Activity_Activity::generate_action_strings( $activities );
     836                        $activities = self::generate_action_strings( $activities );
    837837                }
    838838
    839839                $retval['activities'] = $activities;
     
    999999         *
    10001000         * The only object data required for activity component activity types
    10011001         * (activity_update and activity_comment) is related to users, and that
    1002          * info is fetched separately in BP_Activity_Activity::get_activity_data().
     1002         * info is fetched separately in self::get_activity_data().
    10031003         * So this method contains nothing but a filter that allows other
    10041004         * components, such as bp-friends and bp-groups, to hook in and prime
    10051005         * their own caches at the beginning of an activity loop.
     
    10221022        }
    10231023
    10241024        /**
    1025          * Generate action strings for the activities located in BP_Activity_Activity::get().
     1025         * Generate action strings for the activities located in self::get().
    10261026         *
    10271027         * If no string can be dynamically generated for a given item
    10281028         * (typically because the activity type has not been properly
     
    10481048        }
    10491049
    10501050        /**
    1051          * Get the SQL for the 'meta_query' param in BP_Activity_Activity::get().
     1051         * Get the SQL for the 'meta_query' param in self::get().
    10521052         *
    10531053         * We use WP_Meta_Query to do the heavy lifting of parsing the
    10541054         * meta_query array and creating the necessary SQL clauses. However,
    1055          * since BP_Activity_Activity::get() builds its SQL differently than
     1055         * since self::get() builds its SQL differently than
    10561056         * WP_Query, we have to alter the return value (stripping the leading
    10571057         * AND keyword from the 'where' clause).
    10581058         *
     
    10941094        }
    10951095
    10961096        /**
    1097          * Get the SQL for the 'date_query' param in BP_Activity_Activity::get().
     1097         * Get the SQL for the 'date_query' param in self::get().
    10981098         *
    10991099         * We use BP_Date_Query, which extends WP_Date_Query, to do the heavy lifting
    11001100         * of parsing the date_query array and creating the necessary SQL clauses.
     
    11101110        }
    11111111
    11121112        /**
    1113          * Get the SQL for the 'scope' param in BP_Activity_Activity::get().
     1113         * Get the SQL for the 'scope' param in self::get().
    11141114         *
    11151115         * A scope is a predetermined set of activity arguments.  This method is used
    11161116         * to grab these activity arguments and override any existing args if needed.
     
    11201120         * @since 2.2.0
    11211121         *
    11221122         * @param  mixed $scope  The activity scope. Accepts string or array of scopes.
    1123          * @param  array $r      Current activity arguments. Same as those of BP_Activity_Activity::get(),
     1123         * @param  array $r      Current activity arguments. Same as those of self::get(),
    11241124         *                       but merged with defaults.
    11251125         * @return false|array 'sql' WHERE SQL string and 'override' activity args.
    11261126         */
     
    11761176                         *     @type array  $override Optional. Override existing activity arguments passed by $r.
    11771177                         *     }
    11781178                         * }
    1179                          * @param array $r Current activity arguments passed in BP_Activity_Activity::get().
     1179                         * @param array $r Current activity arguments passed in self::get().
    11801180                         */
    11811181                        $scope_args = apply_filters( "bp_activity_set_{$scope}_scope_args", array(), $r );
    11821182
     
    12161216        /**
    12171217         * In BuddyPress 1.2.x, this was used to retrieve specific activity stream items (for example, on an activity's permalink page).
    12181218         *
    1219          * As of 1.5.x, use BP_Activity_Activity::get() with an 'in' parameter instead.
     1219         * As of 1.5.x, use self::get() with an 'in' parameter instead.
    12201220         *
    12211221         * @since 1.2.0
    12221222         *
    12231223         * @deprecated 1.5
    1224          * @deprecated Use BP_Activity_Activity::get() with an 'in' parameter instead.
     1224         * @deprecated Use self::get() with an 'in' parameter instead.
    12251225         *
    12261226         * @param mixed    $activity_ids     Array or comma-separated string of activity IDs to retrieve.
    12271227         * @param int|bool $max              Maximum number of results to return. (Optional; default is no maximum).
     
    12351235                _deprecated_function(
    12361236                        __FUNCTION__,
    12371237                        '1.5',
    1238                         'Use BP_Activity_Activity::get() with the "in" parameter instead.'
     1238                        'Use self::get() with the "in" parameter instead.'
    12391239                );
    12401240
    1241                 return BP_Activity_Activity::get( $max, $page, $per_page, $sort, false, false, $display_comments, false, false, $activity_ids );
     1241                return self::get( $max, $page, $per_page, $sort, false, false, $display_comments, false, false, $activity_ids );
    12421242        }
    12431243
    12441244        /**
     
    15031503                if ( ! empty( $activity_ids ) ) {
    15041504
    15051505                        // Delete all activity meta entries for activity items.
    1506                         BP_Activity_Activity::delete_activity_meta_entries( $activity_ids );
     1506                        self::delete_activity_meta_entries( $activity_ids );
    15071507
    15081508                        // Setup empty array for comments.
    15091509                        $comment_ids = array();
     
    15121512                        foreach ( $activity_ids as $activity_id ) {
    15131513
    15141514                                // Attempt to delete comments.
    1515                                 $comments = BP_Activity_Activity::delete( array(
     1515                                $comments = self::delete( array(
    15161516                                        'type'    => 'activity_comment',
    15171517                                        'item_id' => $activity_id
    15181518                                ) );
     
    15361536         * Delete the comments associated with a set of activity items.
    15371537         *
    15381538         * This method is no longer used by BuddyPress, and it is recommended not to
    1539          * use it going forward, and use BP_Activity_Activity::delete() instead.
     1539         * use it going forward, and use self::delete() instead.
    15401540         *
    15411541         * @since 1.2.0
    15421542         *
     
    16031603                // Now fetch the activity comments and parse them into the correct position in the activities array.
    16041604                foreach ( (array) $activities as $activity ) {
    16051605                        $top_level_parent_id = 'activity_comment' == $activity->type ? $activity->item_id : 0;
    1606                         $activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments( $activity->id, $activity->mptt_left, $activity->mptt_right, $spam, $top_level_parent_id );
     1606                        $activity_comments[$activity->id] = self::get_activity_comments( $activity->id, $activity->mptt_left, $activity->mptt_right, $spam, $top_level_parent_id );
    16071607                }
    16081608
    16091609                // Merge the comments with the activity items.
     
    18001800                $right = intval( $left + 1 );
    18011801
    18021802                // Get all descendants of this node.
    1803                 $comments    = BP_Activity_Activity::get_child_comments( $parent_id );
     1803                $comments    = self::get_child_comments( $parent_id );
    18041804                $descendants = wp_list_pluck( $comments, 'id' );
    18051805
    18061806                // Loop the descendants and recalculate the left and right values.
    18071807                foreach ( (array) $descendants as $descendant_id ) {
    1808                         $right = BP_Activity_Activity::rebuild_activity_comment_tree( $descendant_id, $right );
     1808                        $right = self::rebuild_activity_comment_tree( $descendant_id, $right );
    18091809                }
    18101810
    18111811                // We've got the left value, and now that we've processed the children
     
    18941894         *
    18951895         * @since 1.5.0
    18961896         *
    1897          * @see BP_Activity_Activity::get_filter_sql()
     1897         * @see self::get_filter_sql()
    18981898         *
    1899          * @global wpdb $wpdb WordPress database object. 
     1899         * @global wpdb $wpdb WordPress database object.
    19001900         *
    19011901         * @param string     $field The database field.
    19021902         * @param array|bool $items The values for the IN clause, or false when none are found.
     
    19601960                $filter_sql = array();
    19611961
    19621962                if ( !empty( $filter_array['user_id'] ) ) {
    1963                         $user_sql = BP_Activity_Activity::get_in_operator_sql( 'a.user_id', $filter_array['user_id'] );
     1963                        $user_sql = self::get_in_operator_sql( 'a.user_id', $filter_array['user_id'] );
    19641964                        if ( !empty( $user_sql ) )
    19651965                                $filter_sql[] = $user_sql;
    19661966                }
    19671967
    19681968                if ( !empty( $filter_array['object'] ) ) {
    1969                         $object_sql = BP_Activity_Activity::get_in_operator_sql( 'a.component', $filter_array['object'] );
     1969                        $object_sql = self::get_in_operator_sql( 'a.component', $filter_array['object'] );
    19701970                        if ( !empty( $object_sql ) )
    19711971                                $filter_sql[] = $object_sql;
    19721972                }
    19731973
    19741974                if ( !empty( $filter_array['action'] ) ) {
    1975                         $action_sql = BP_Activity_Activity::get_in_operator_sql( 'a.type', $filter_array['action'] );
     1975                        $action_sql = self::get_in_operator_sql( 'a.type', $filter_array['action'] );
    19761976                        if ( ! empty( $action_sql ) )
    19771977                                $filter_sql[] = $action_sql;
    19781978                }
    19791979
    19801980                if ( !empty( $filter_array['primary_id'] ) ) {
    1981                         $pid_sql = BP_Activity_Activity::get_in_operator_sql( 'a.item_id', $filter_array['primary_id'] );
     1981                        $pid_sql = self::get_in_operator_sql( 'a.item_id', $filter_array['primary_id'] );
    19821982                        if ( !empty( $pid_sql ) )
    19831983                                $filter_sql[] = $pid_sql;
    19841984                }
    19851985
    19861986                if ( !empty( $filter_array['secondary_id'] ) ) {
    1987                         $sid_sql = BP_Activity_Activity::get_in_operator_sql( 'a.secondary_item_id', $filter_array['secondary_id'] );
     1987                        $sid_sql = self::get_in_operator_sql( 'a.secondary_item_id', $filter_array['secondary_id'] );
    19881988                        if ( !empty( $sid_sql ) )
    19891989                                $filter_sql[] = $sid_sql;
    19901990                }
     
    20192019         *
    20202020         * @since 1.2.0
    20212021         *
    2022          * @global wpdb $wpdb WordPress database object. 
     2022         * @global wpdb $wpdb WordPress database object.
    20232023         *
    20242024         * @return string ISO timestamp.
    20252025         */
  • class-bp-activity-feed.php

     
    5555         * @since 1.8.0
    5656         *
    5757         * @param string $key Property to check.
    58          * @return bool Whether or not data variable exists.
     58         * @return bool Whether data variable exists.
    5959         */
    6060        public function __isset( $key ) {
    6161                return isset( $this->data[ $key ] );
  • class-bp-activity-query.php

     
    134134                if ( isset( $clause['compare'] ) ) {
    135135                        $clause['compare'] = strtoupper( $clause['compare'] );
    136136                } else {
    137                         $clause['compare'] = isset( $clause['value'] ) && is_array( $clause['value'] ) ? 'IN' : '=';
     137                        $clause['compare'] = is_array( $clause['value'] ) ? 'IN' : '=';
    138138                }
    139139
    140140                // Default 'compare' to '=' if no valid operator is found.
     
    156156                $where = '';
    157157
    158158                // Value.
    159                 if ( isset( $clause['value'] ) ) {
    160                         if ( in_array( $compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) {
    161                                 if ( ! is_array( $value ) ) {
    162                                         $value = preg_split( '/[,\s]+/', $value );
    163                                 }
     159
     160                if ( in_array( $compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) {
     161                        if ( ! is_array( $value ) ) {
     162                                $value = preg_split( '/[,\s]+/', $value );
    164163                        }
     164                }
    165165
    166                         // Tinyint.
    167                         if ( ! empty( $column ) && true === in_array( $column, array( 'hide_sitewide', 'is_spam' ) ) && is_int( $value ) ) {
    168                                 $sql_chunks['where'][] = $wpdb->prepare( "{$alias}{$column} = %d", $value );
     166                // Tinyint.
     167                if ( true === in_array( $column, array( 'hide_sitewide', 'is_spam' ) ) && is_int( $value ) ) {
     168                        $sql_chunks['where'][] = $wpdb->prepare( "{$alias}{$column} = %d", $value );
    169169
    170                         } else {
    171                                 switch ( $compare ) {
    172                                         // IN uses different syntax.
    173                                         case 'IN' :
    174                                         case 'NOT IN' :
    175                                                 $in_sql = BP_Activity_Activity::get_in_operator_sql( "{$alias}{$column}", $value );
     170                } else {
     171                        switch ( $compare ) {
     172                                // IN uses different syntax.
     173                                case 'IN' :
     174                                case 'NOT IN' :
     175                                        $in_sql = BP_Activity_Activity::get_in_operator_sql( "{$alias}{$column}", $value );
    176176
    177                                                 // 'NOT IN' operator is as easy as a string replace!
    178                                                 if ( 'NOT IN' === $compare ) {
    179                                                         $in_sql = str_replace( 'IN', 'NOT IN', $in_sql );
    180                                                 }
     177                                        // 'NOT IN' operator is as easy as a string replace!
     178                                        if ( 'NOT IN' === $compare ) {
     179                                                $in_sql = str_replace( 'IN', 'NOT IN', $in_sql );
     180                                        }
    181181
    182                                                 $sql_chunks['where'][] = $in_sql;
    183                                                 break;
     182                                        $sql_chunks['where'][] = $in_sql;
     183                                        break;
    184184
    185                                         case 'BETWEEN' :
    186                                         case 'NOT BETWEEN' :
    187                                                 $value = array_slice( $value, 0, 2 );
    188                                                 $where = $wpdb->prepare( '%s AND %s', $value );
    189                                                 break;
     185                                case 'BETWEEN' :
     186                                case 'NOT BETWEEN' :
     187                                        $value = array_slice( $value, 0, 2 );
     188                                        $where = $wpdb->prepare( '%s AND %s', $value );
     189                                        break;
    190190
    191                                         case 'LIKE' :
    192                                         case 'NOT LIKE' :
    193                                                 $value = '%' . bp_esc_like( $value ) . '%';
    194                                                 $where = $wpdb->prepare( '%s', $value );
    195                                                 break;
     191                                case 'LIKE' :
     192                                case 'NOT LIKE' :
     193                                        $value = '%' . bp_esc_like( $value ) . '%';
     194                                        $where = $wpdb->prepare( '%s', $value );
     195                                        break;
    196196
    197                                         default :
    198                                                 $where = $wpdb->prepare( '%s', $value );
    199                                                 break;
     197                                default :
     198                                        $where = $wpdb->prepare( '%s', $value );
     199                                        break;
    200200
    201                                 }
    202201                        }
     202                }
    203203
    204                         if ( $where ) {
    205                                 $sql_chunks['where'][] = "{$alias}{$column} {$compare} {$where}";
    206                         }
     204                if ( $where ) {
     205                        $sql_chunks['where'][] = "{$alias}{$column} {$compare} {$where}";
    207206                }
    208207
     208
    209209                /*
    210210                 * Multiple WHERE clauses should be joined in parentheses.
    211211                 */
  • class-bp-akismet.php

     
    159159         * usermeta, ensuring that it won't appear in the member header and
    160160         * elsewhere in the theme.
    161161         *
    162          * This can't be done in BP_Akismet::check_activity() due to the
     162         * This can't be done in self::check_activity() due to the
    163163         * default AJAX implementation; see bp_dtheme_post_update().
    164164         *
    165165         * @since 1.6.0
     
    172172         */
    173173        public function check_member_activity_update( $content, $user_id, $activity_id ) {
    174174                // By default, only handle activity updates and activity comments.
    175                 if ( empty( $this->last_activity ) || !in_array( $this->last_activity->type, BP_Akismet::get_activity_types() ) )
     175                if ( empty( $this->last_activity ) || !in_array( $this->last_activity->type, self::get_activity_types() ) )
    176176                        return;
    177177
    178178                // Was this $activity_id just marked as spam? If not, bail out.
     
    196196                }
    197197
    198198                // By default, only handle activity updates and activity comments.
    199                 if ( ! in_array( bp_get_activity_type(), BP_Akismet::get_activity_types(), true ) ) {
     199                if ( ! in_array( bp_get_activity_type(), self::get_activity_types(), true ) ) {
    200200                        return;
    201201                }
    202202
     
    235235
    236236                // By default, only handle activity updates and activity comments.
    237237                $current_comment = bp_activity_current_comment();
    238                 if ( empty( $current_comment ) || ! in_array( $current_comment->type, BP_Akismet::get_activity_types(), true ) ) {
     238                if ( empty( $current_comment ) || ! in_array( $current_comment->type, self::get_activity_types(), true ) ) {
    239239                        return;
    240240                }
    241241
     
    296296         *                                       "by_akismet" (automatically spammed).
    297297         */
    298298        public function mark_as_spam( $activity, $source ) {
    299                 // Record this item so we can do some tidyup in BP_Akismet::check_member_activity_update().
     299                // Record this item so we can do some tidyup in self::check_member_activity_update().
    300300                $this->last_activity = $activity;
    301301
    302302                /**
     
    405405         */
    406406        public function check_activity( $activity ) {
    407407                // By default, only handle activity updates and activity comments.
    408                 if ( !in_array( $activity->type, BP_Akismet::get_activity_types() ) )
     408                if ( !in_array( $activity->type, self::get_activity_types() ) )
    409409                        return;
    410410
    411411                // Make sure last_activity is clear to avoid any confusion.
     
    412412                $this->last_activity = null;
    413413
    414414                // Build data package for Akismet.
    415                 $activity_data = BP_Akismet::build_akismet_data_package( $activity );
     415                $activity_data = self::build_akismet_data_package( $activity );
    416416
    417417                // Check with Akismet to see if this is spam.
    418418                $activity_data = $this->send_akismet_request( $activity_data, 'check', 'spam' );
     
    466466         */
    467467        public function update_activity_spam_meta( $activity ) {
    468468                // By default, only handle activity updates and activity comments.
    469                 if ( !in_array( $activity->type, BP_Akismet::get_activity_types() ) )
     469                if ( !in_array( $activity->type, self::get_activity_types() ) )
    470470                        return;
    471471
    472472                $this->update_activity_history(
     
    492492         */
    493493        public function update_activity_ham_meta( $activity ) {
    494494                // By default, only handle activity updates and activity comments.
    495                 if ( !in_array( $activity->type, BP_Akismet::get_activity_types() ) )
     495                if ( !in_array( $activity->type, self::get_activity_types() ) )
    496496                        return;
    497497
    498498                $this->update_activity_history(
     
    522522                        return;
    523523
    524524                // By default, only handle activity updates and activity comments.
    525                 if ( !in_array( $this->last_activity->type, BP_Akismet::get_activity_types() ) )
     525                if ( !in_array( $this->last_activity->type, self::get_activity_types() ) )
    526526                        return;
    527527
    528528                // Spam.
     
    665665         * @param object $item Activity item.
    666666         */
    667667        function history_metabox( $item ) {
    668                 $history = BP_Akismet::get_activity_history( $item->id );
     668                $history = self::get_activity_history( $item->id );
    669669
    670670                if ( empty( $history ) ) {
    671671                        $message = '—';