Skip to:
Content

BuddyPress.org

Ticket #5022: 5022.bp-activity-classes.diff

File 5022.bp-activity-classes.diff, 5.4 KB (added by ericlewis, 11 years ago)

more thorough work of bp-activity-classes from 5022.diff.

  • bp-activity/bp-activity-classes.php

     
    99// Exit if accessed directly
    1010if ( !defined( 'ABSPATH' ) ) exit;
    1111
     12/**
     13 * Database interaction class for the BuddyPress activity component.
     14 *
     15 * Instance methods are available for creating/editing an activity,
     16 * static methods for querying activities.
     17 *
     18 * @since BuddyPress (1.0)
     19 */
    1220class BP_Activity_Activity {
     21
     22        /** Properties ************************************************************/
     23
     24        /**
     25         * @var int Activity ID
     26         */
    1327        var $id;
     28
     29        /**
     30         * @var int The primary item ID
     31         */
    1432        var $item_id;
     33
     34        /**
     35         * @var int The secondary item ID
     36         */
    1537        var $secondary_item_id;
     38
     39        /**
     40         * @var int The user ID
     41         */
    1642        var $user_id;
     43
     44        /**
     45         * @var string The primary URL for the activity in RSS feeds
     46         */
    1747        var $primary_link;
     48
     49        /**
     50         * @var string The BuddyPress component activity relates to
     51         */
    1852        var $component;
     53
     54        /**
     55         * @var string Activity type (e.g. activity_update)
     56         */
    1957        var $type;
     58
     59        /**
     60         * @var string Description of the activity, (e.g. Alex posted an update)
     61         */
    2062        var $action;
     63
     64        /**
     65         * @var string Activity content
     66         */
    2167        var $content;
     68
     69        /**
     70         * @var string ISO timestamp of the activity's date/time
     71         */
    2272        var $date_recorded;
     73
     74        /**
     75         * @var int Hide activity from sitewide feeds
     76         */
    2377        var $hide_sitewide = false;
     78
     79        /**
     80         * @var int node boundary start for activity or activity comment
     81         */
    2482        var $mptt_left;
     83
     84        /**
     85         * @var int node boundary end for activity or activity comment
     86         */
    2587        var $mptt_right;
     88
     89        /**
     90         * @var int Activity spam/ham status
     91         */
    2692        var $is_spam;
    2793
     94        /** Instance Methods ******************************************************/
     95
     96        /**
     97         * Constructor
     98         *
     99         * @param int $id optional Activity ID
     100         */
    28101        function __construct( $id = false ) {
    29102                if ( !empty( $id ) ) {
    30103                        $this->id = $id;
     
    104177                return true;
    105178        }
    106179
    107         // Static Functions
     180        /** Static Methods ********************************************************/
    108181
    109182        /**
    110183         * Get activity items, as specified by parameters
     
    256329                        $activity_user_ids = wp_list_pluck( $activities, 'user_id' );
    257330                        $activity_user_ids = implode( ',', wp_parse_id_list( $activity_user_ids ) );
    258331
    259                         if ( !empty( $activity_user_ids ) ) {                           
     332                        if ( !empty( $activity_user_ids ) ) {
    260333                                if ( $names = $wpdb->get_results( "SELECT user_id, value AS user_fullname FROM {$bp->profile->table_name_data} WHERE field_id = 1 AND user_id IN ({$activity_user_ids})" ) ) {
    261334                                        foreach ( (array) $names as $name )
    262335                                                $tmp_names[$name->user_id] = $name->user_fullname;
     
    584657                return $comments;
    585658        }
    586659
     660        /**
     661         * Rebuild nested comment tree under an activity or activity comment.
     662         *
     663         * @global BuddyPress $bp The one true BuddyPress instance
     664         * @global wpdb $wpdb WordPress database object
     665         * @param int $parent_id ID of an activty or activity comment
     666         * @param int $left node boundary start for activity or activity comment
     667         * @return int Right node boundary of activity or activity comment
     668         * @since BuddyPress (1.2)
     669         */
    587670        function rebuild_activity_comment_tree( $parent_id, $left = 1 ) {
    588671                global $wpdb, $bp;
    589672
     
    608691                return $right + 1;
    609692        }
    610693
     694        /**
     695         * Get child comments of an activity or activity comment
     696         *
     697         * @global BuddyPress $bp The one true BuddyPress instance
     698         * @global wpdb $wpdb WordPress database object
     699         * @param int $parent_id ID of an activty or activity comment
     700         * @return object Numerically indexed array of child comments
     701         * @since BuddyPress (1.2)
     702         */
    611703        function get_child_comments( $parent_id ) {
    612704                global $bp, $wpdb;
    613705
    614706                return $wpdb->get_results( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE type = 'activity_comment' AND secondary_item_id = %d", $parent_id ) );
    615707        }
    616708
     709        /**
     710         * Get a unique list of components that have related activity recorded to them
     711         *
     712         * @global BuddyPress $bp The one true BuddyPress instance
     713         * @global wpdb $wpdb WordPress database object
     714         * @return array The components
     715         * @since BuddyPress (1.2)
     716         */
    617717        function get_recorded_components() {
    618718                global $wpdb, $bp;
    619719
     
    637737                return $activity_feed;
    638738        }
    639739
     740        /**
     741         * Create SQL IN clause
     742         *
     743         * @param string $field The database field
     744         * @param array $items The values for the IN clause
     745         * @since BuddyPress (1.3)
     746         */
    640747        function get_in_operator_sql( $field, $items ) {
    641748                global $wpdb;
    642749
     
    661768                        return false;
    662769        }
    663770
     771        /**
     772         * Create filter SQL clauses
     773         *
     774         * @param array $filter_array Multidimensional array of fields to filter and values
     775         * @since BuddyPress (1.3)
     776         */
    664777        function get_filter_sql( $filter_array ) {
    665778
    666779                $filter_sql = array();
     
    701814                return join( ' AND ', $filter_sql );
    702815        }
    703816
     817
     818        /**
     819         * Get the date/time of last recorded activity
     820         *
     821         * @return string ISO timestamp
     822         * @since BuddyPress (1.2)
     823         */
    704824        function get_last_updated() {
    705825                global $bp, $wpdb;
    706826
     
    720840                return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE content = %s", $content ) );
    721841        }
    722842
     843        /**
     844         * Hide all sitewide activity for a specific user
     845         *
     846         * @param int $user_id
     847         * @since BuddyPress (1.2)
     848         */
    723849        function hide_all_for_user( $user_id ) {
    724850                global $wpdb, $bp;
    725851