Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
09/06/2010 04:24:57 PM (14 years ago)
Author:
apeatling
Message:

Merging 1.2 branch with trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-blogs/bp-blogs-classes.php

    r2842 r3232  
    279279            return $paged_blogs;
    280280
    281         for ( $i = 0; $i < count( $paged_blogs ); $i++ )
    282             $paged_blogs[$i]->latest_post = $wpdb->get_row( "SELECT post_title, guid FROM {$wpdb->base_prefix}" . $paged_blogs[$i]->blog_id . "_posts WHERE post_status = 'publish' AND post_type = 'post' AND id != 1 ORDER BY id DESC LIMIT 1" );
     281        /* Fetch lastest post for each blog. */
     282        $post_ids = $wpdb->get_results( $wpdb->prepare( "SELECT p.post_id, p.blog_id FROM {$bp->blogs->table_name_blog_posts} p LEFT JOIN {$wpdb->base_prefix}blogs b ON p.blog_id = b.blog_id WHERE b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND p.blog_id IN ( {$blog_ids} ) GROUP BY p.blog_id ORDER BY p.date_created DESC" ) );
     283
     284        for ( $i = 0; $i < count( $paged_blogs ); $i++ ) {
     285            foreach ( (array)$post_ids as $post ) {
     286                if ( $post->blog_id == $paged_blogs[$i]->blog_id ) {
     287                    $paged_blogs[$i]->latest_post = $wpdb->get_row( "SELECT post_title, guid FROM {$wpdb->base_prefix}" . $post->blog_id . "_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY id DESC LIMIT 1" );
     288                }
     289            }
     290        }
    283291
    284292        /* Fetch the blog description for each blog (as it may be empty we can't fetch it in the main query). */
     
    308316}
    309317
     318/* DEPRECATED - Post DB recording is scheduled for removal. Please use the activity stream to fetch a user's posts. */
     319Class BP_Blogs_Post {
     320    var $id;
     321    var $user_id;
     322    var $blog_id;
     323    var $post_id;
     324    var $date_created;
     325
     326    function bp_blogs_post( $id = null, $blog_id = null, $post_id = null ) {
     327        global $bp, $wpdb;
     328
     329        if ( $id || ( !$id && $blog_id && $post_id ) ) {
     330            $this->id = $id;
     331            $this->blog_id = $blog_id;
     332            $this->post_id = $post_id;
     333            $this->populate();
     334        }
     335    }
     336
     337    function populate() {
     338        global $wpdb, $bp;
     339
     340        if ( $this->id )
     341            $post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name_blog_posts} WHERE id = %d", $this->id ) );
     342        else
     343            $post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name_blog_posts} WHERE blog_id = %d AND post_id = %d", $this->blog_id, $this->post_id ) );
     344
     345        $this->id = $post->id;
     346        $this->user_id = $post->user_id;
     347        $this->blog_id = $post->blog_id;
     348        $this->post_id = $post->post_id;
     349        $this->date_created = $post->date_created;
     350    }
     351
     352    function save() {
     353        global $wpdb, $bp;
     354
     355        $this->post_id = apply_filters( 'bp_blogs_post_id_before_save', $this->post_id, $this->id );
     356        $this->blog_id = apply_filters( 'bp_blogs_post_blog_id_before_save', $this->blog_id, $this->id );
     357        $this->user_id = apply_filters( 'bp_blogs_post_user_id_before_save', $this->user_id, $this->id );
     358        $this->date_created = apply_filters( 'bp_blogs_post_date_created_before_save', $this->date_created, $this->id );
     359
     360        do_action( 'bp_blogs_post_before_save', $this );
     361
     362        if ( $this->id ) {
     363            // Update
     364            $sql = $wpdb->prepare( "UPDATE {$bp->blogs->table_name_blog_posts} SET post_id = %d, blog_id = %d, user_id = %d, date_created = FROM_UNIXTIME(%d) WHERE id = %d", $this->post_id, $this->blog_id, $this->user_id, $this->date_created, $this->id );
     365        } else {
     366            // Save
     367            $sql = $wpdb->prepare( "INSERT INTO {$bp->blogs->table_name_blog_posts} ( post_id, blog_id, user_id, date_created ) VALUES ( %d, %d, %d, FROM_UNIXTIME(%d) )", $this->post_id, $this->blog_id, $this->user_id, $this->date_created );
     368        }
     369
     370        if ( !$wpdb->query($sql) )
     371            return false;
     372
     373        do_action( 'bp_blogs_post_after_save', $this );
     374
     375        if ( $this->id )
     376            return $this->id;
     377        else
     378            return $wpdb->insert_id;
     379    }
     380
     381    /* Static Functions */
     382
     383    function delete( $post_id, $blog_id ) {
     384        global $wpdb, $bp, $current_user;
     385
     386        if ( !$bp->blogs )
     387            bp_blogs_setup_globals();
     388
     389        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_posts} WHERE blog_id = %d AND post_id = %d", $blog_id, $post_id ) );
     390    }
     391
     392    function delete_oldest( $user_id = null ) {
     393        global $wpdb, $bp;
     394
     395        if ( !$bp->blogs )
     396            bp_blogs_setup_globals();
     397
     398        if ( !$user_id )
     399            $user_id = $current_user->ID;
     400
     401        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_posts} WHERE user_id = %d ORDER BY date_created ASC LIMIT 1", $user_id ) );
     402    }
     403
     404    function delete_posts_for_user( $user_id = null ) {
     405        global $wpdb, $bp;
     406
     407        if ( !$bp->blogs )
     408            bp_blogs_setup_globals();
     409
     410        if ( !$user_id )
     411            $user_id = $bp->loggedin_user->id;
     412
     413        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_posts} WHERE user_id = %d", $user_id ) );
     414    }
     415
     416    function delete_posts_for_blog( $blog_id ) {
     417        global $wpdb, $bp;
     418
     419        if ( !$bp->blogs )
     420            bp_blogs_setup_globals();
     421
     422        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_posts} WHERE blog_id = %d", $blog_id ) );
     423    }
     424
     425    function get_latest_posts( $blog_id = null, $limit = 5 ) {
     426        global $wpdb, $bp;
     427
     428        if ( !$bp->blogs )
     429            bp_blogs_setup_globals();
     430
     431        if ( $blog_id )
     432            $blog_sql = $wpdb->prepare( " AND p.blog_id = %d", $blog_id );
     433
     434        $post_ids = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT p.post_id, p.blog_id FROM {$bp->blogs->table_name_blog_posts} p LEFT JOIN {$wpdb->base_prefix}blogs b ON p.blog_id = b.blog_id WHERE b.public = 1 AND b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 $blog_sql ORDER BY p.date_created DESC LIMIT $limit" ) );
     435
     436        for ( $i = 0; $i < count($post_ids); $i++ ) {
     437            $posts[$i] = BP_Blogs_Post::fetch_post_content($post_ids[$i]);
     438        }
     439
     440        return $posts;
     441    }
     442
     443    function get_posts_for_user( $user_id = null ) {
     444        global $bp, $wpdb;
     445
     446        if ( !$bp->blogs )
     447            bp_blogs_setup_globals();
     448
     449        if ( !$user_id )
     450            $user_id = $bp->displayed_user->id;
     451
     452        // Show a logged in user their posts on private blogs, but not anyone else.
     453        if ( !bp_is_my_profile() ) {
     454            $post_ids = $wpdb->get_results( $wpdb->prepare( "SELECT p.post_id, p.blog_id FROM {$bp->blogs->table_name_blog_posts} p LEFT JOIN {$wpdb->base_prefix}blogs b ON p.blog_id = b.blog_id WHERE b.public = 1 AND b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND p.user_id = %d ORDER BY p.date_created DESC", $user_id) );
     455            $total_post_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(p.post_id) FROM {$bp->blogs->table_name_blog_posts} p LEFT JOIN {$wpdb->base_prefix}blogs b ON p.blog_id = b.blog_id WHERE b.public = 1 AND b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND p.user_id = %d", $user_id) );
     456        } else {
     457            $post_ids = $wpdb->get_results( $wpdb->prepare( "SELECT p.post_id, p.blog_id FROM {$bp->blogs->table_name_blog_posts} p LEFT JOIN {$wpdb->base_prefix}blogs b ON p.blog_id = b.blog_id WHERE b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND p.user_id = %d ORDER BY p.date_created DESC", $user_id) );
     458
     459            $total_post_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(p.post_id) FROM {$bp->blogs->table_name_blog_posts} p LEFT JOIN {$wpdb->base_prefix}blogs b ON p.blog_id = b.blog_id WHERE b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND p.user_id = %d", $user_id) );
     460        }
     461
     462        for ( $i = 0; $i < count($post_ids); $i++ ) {
     463            $posts[$i] = BP_Blogs_Post::fetch_post_content($post_ids[$i]);
     464        }
     465
     466        return array( 'posts' => $posts, 'count' => $total_post_count );
     467    }
     468
     469    function fetch_post_content( $post_object ) {
     470        // TODO: switch_to_blog() calls are expensive and this needs to be changed.
     471        switch_to_blog( $post_object->blog_id );
     472        $post = get_post($post_object->post_id);
     473        $post->blog_id = $post_object->blog_id;
     474        restore_current_blog();
     475
     476        return $post;
     477    }
     478
     479    function get_total_recorded_for_user( $user_id = null ) {
     480        global $bp, $wpdb;
     481
     482        if ( !$bp->blogs )
     483            bp_blogs_setup_globals();
     484
     485        if ( !$user_id )
     486            $user_id = $current_user->ID;
     487
     488        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(post_id) FROM {$bp->blogs->table_name_blog_posts} WHERE user_id = %d", $user_id ) );
     489    }
     490
     491    function is_recorded( $post_id, $blog_id, $user_id = null ) {
     492        global $bp, $wpdb, $current_user;
     493
     494        if ( !$bp->blogs )
     495            bp_blogs_setup_globals();
     496
     497        if ( !$user_id )
     498            $user_id = $current_user->ID;
     499
     500        return $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM {$bp->blogs->table_name_blog_posts} WHERE post_id = %d AND blog_id = %d AND user_id = %d", $post_id, $blog_id, $user_id ) );
     501    }
     502
     503    function total_post_count( $blog_id ) {
     504        global $bp, $wpdb;
     505
     506        if ( !$bp->blogs )
     507            bp_blogs_setup_globals();
     508
     509        if ( !$blog_id )
     510            return false;
     511
     512        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(post_id) FROM {$bp->blogs->table_name_blog_posts} WHERE blog_id = %d", $blog_id ) );
     513    }
     514
     515    function get_all() {
     516        global $bp, $wpdb;
     517
     518        if ( !$bp->blogs )
     519            bp_blogs_setup_globals();
     520
     521        return $wpdb->get_col( $wpdb->prepare( "SELECT post_id, blog_id FROM " . $bp->blogs->table_name_blog_posts ) );
     522    }
     523
     524}
     525
     526/* DEPRECATED - Comment DB recording is scheduled for removal. Please use the activity stream to fetch a user's comments. */
     527Class BP_Blogs_Comment {
     528    var $id;
     529    var $user_id;
     530    var $blog_id;
     531    var $comment_id;
     532    var $comment_post_id;
     533    var $date_created;
     534
     535    function bp_blogs_comment( $id = false, $blog_id = false, $comment_id = false ) {
     536        global $bp, $wpdb;
     537
     538        if ( !$user_id )
     539            $user_id = $bp->displayed_user->id;
     540
     541        if ( $id || ( !$id && $blog_id && $comment_id ) ) {
     542            $this->id = $id;
     543            $this->blog_id = $blog_id;
     544            $this->comment_id = $comment_id;
     545            $this->populate();
     546        }
     547    }
     548
     549    function populate() {
     550        global $wpdb, $bp;
     551
     552        if ( $this->id )
     553            $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name_blog_comments} WHERE id = %d", $this->id ) );
     554        else
     555            $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name_blog_comments} WHERE blog_id = %d AND comment_id = %d", (int)$this->blog_id, (int)$this->comment_id ) );
     556
     557        $this->comment_id = $comment->comment_id;
     558        $this->user_id = $comment->user_id;
     559        $this->blog_id = $comment->blog_id;
     560        $this->comment_post_id = $comment->comment_post_id;
     561        $this->date_created = $comment->date_created;
     562    }
     563
     564    function save() {
     565        global $wpdb, $bp;
     566
     567        $this->comment_id = apply_filters( 'bp_blogs_comment_id_before_save', $this->comment_id, $this->id );
     568        $this->comment_post_id = apply_filters( 'bp_blogs_comment_post_id_before_save', $this->comment_post_id, $this->id );
     569        $this->blog_id = apply_filters( 'bp_blogs_comment_blog_id_before_save', $this->blog_id, $this->id );
     570        $this->user_id = apply_filters( 'bp_blogs_comment_user_id_before_save', $this->user_id, $this->id );
     571        $this->date_created = apply_filters( 'bp_blogs_comment_date_created_before_save', $this->date_created, $this->id );
     572
     573        do_action( 'bp_blogs_comment_before_save', $this );
     574
     575        if ( $this->id ) {
     576            // Update
     577            $sql = $wpdb->prepare( "UPDATE {$bp->blogs->table_name_blog_comments} SET comment_id = %d, comment_post_id = %d, blog_id = %d, user_id = %d, date_created = FROM_UNIXTIME(%d) WHERE id = %d", $this->comment_id, $this->comment_post_id, $this->blog_id, $this->user_id, $this->date_created, $this->id );
     578        } else {
     579            // Save
     580            $sql = $wpdb->prepare( "INSERT INTO {$bp->blogs->table_name_blog_comments} ( comment_id, comment_post_id, blog_id, user_id, date_created ) VALUES ( %d, %d, %d, %d, FROM_UNIXTIME(%d) )", $this->comment_id, $this->comment_post_id, $this->blog_id, $this->user_id, $this->date_created );
     581        }
     582
     583        if ( !$wpdb->query($sql) )
     584            return false;
     585
     586        do_action( 'bp_blogs_comment_after_save', $this );
     587
     588        if ( $this->id )
     589            return $this->id;
     590        else
     591            return $wpdb->insert_id;
     592    }
     593
     594    /* Static Functions */
     595
     596    function delete( $comment_id, $blog_id ) {
     597        global $wpdb, $bp, $current_user;
     598
     599        if ( !$bp->blogs )
     600            bp_blogs_setup_globals();
     601
     602        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_comments} WHERE comment_id = %d AND blog_id = %d", $comment_id, $blog_id ) );
     603    }
     604
     605    function delete_oldest( $user_id = null ) {
     606        global $wpdb, $bp, $current_user;
     607
     608        if ( !$bp->blogs )
     609            bp_blogs_setup_globals();
     610
     611        if ( !$user_id )
     612            $user_id = $current_user->ID;
     613
     614        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_comments} WHERE user_id = %d ORDER BY date_created ASC LIMIT 1", $user_id ) );
     615    }
     616
     617    function delete_comments_for_user( $user_id = null ) {
     618        global $wpdb, $bp;
     619
     620        if ( !$bp->blogs )
     621            bp_blogs_setup_globals();
     622
     623        if ( !$user_id )
     624            $user_id = $bp->loggedin_user->id;
     625
     626        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_comments} WHERE user_id = %d", $user_id ) );
     627    }
     628
     629    function delete_comments_for_blog( $blog_id ) {
     630        global $wpdb, $bp;
     631
     632        if ( !$bp->blogs )
     633            bp_blogs_setup_globals();
     634
     635        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blog_comments} WHERE blog_id = %d", $blog_id ) );
     636    }
     637
     638    function get_comments_for_user( $user_id = null ) {
     639        global $bp, $wpdb;
     640
     641        if ( !$bp->blogs )
     642            bp_blogs_setup_globals();
     643
     644        if ( !$user_id )
     645            $user_id = $bp->displayed_user->id;
     646
     647        // Show the logged in user their comments on hidden blogs, but not to anyone else.
     648        if ( !bp_is_my_profile() ) {
     649            $comment_ids = $wpdb->get_results( $wpdb->prepare( "SELECT c.comment_id, c.blog_id FROM {$bp->blogs->table_name_blog_comments} c LEFT JOIN {$wpdb->base_prefix}blogs b ON c.blog_id = b.blog_id WHERE b.public = 1 AND b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND c.user_id = %d ORDER BY c.date_created ASC", $user_id) );
     650            $total_comment_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(c.comment_id) FROM {$bp->blogs->table_name_blog_comments} c LEFT JOIN {$wpdb->base_prefix}blogs b ON c.blog_id = b.blog_id WHERE b.public = 1 AND b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND c.user_id = %d", $user_id) );
     651        } else {
     652            $comment_ids = $wpdb->get_results( $wpdb->prepare( "SELECT c.comment_id, c.blog_id FROM {$bp->blogs->table_name_blog_comments} c LEFT JOIN {$wpdb->base_prefix}blogs b ON c.blog_id = b.blog_id WHERE b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND c.user_id = %d ORDER BY c.date_created ASC", $user_id) );
     653
     654            $total_comment_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(c.comment_id) FROM {$bp->blogs->table_name_blog_comments} c LEFT JOIN {$wpdb->base_prefix}blogs b ON c.blog_id = b.blog_id WHERE b.deleted = 0 AND b.archived = '0' AND b.spam = 0 AND b.mature = 0 AND c.user_id = %d", $user_id) );
     655        }
     656
     657        for ( $i = 0; $i < count($comment_ids); $i++ )
     658            $comments[$i] = BP_Blogs_Comment::fetch_comment_content($comment_ids[$i]);
     659
     660        return array( 'comments' => $comments, 'count' => $total_comment_count );
     661    }
     662
     663    function fetch_comment_content( $comment_object ) {
     664        switch_to_blog($comment_object->blog_id);
     665        $comment = get_comment($comment_object->comment_id);
     666        $comment->blog_id = $comment_object->blog_id;
     667        $comment->post = &get_post( $comment->comment_post_ID );
     668        restore_current_blog();
     669
     670        return $comment;
     671    }
     672
     673    function get_total_recorded_for_user( $user_id = null ) {
     674        global $bp, $wpdb, $current_user;
     675
     676        if ( !$bp->blogs )
     677            bp_blogs_setup_globals();
     678
     679        if ( !$user_id )
     680            $user_id = $current_user->ID;
     681
     682        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_id) FROM {$bp->blogs->table_name_blog_comments} WHERE user_id = %d", $user_id ) );
     683    }
     684
     685    function total_comment_count( $blog_id, $post_id ) {
     686        global $bp, $wpdb;
     687
     688        if ( !$bp->blogs )
     689            bp_blogs_setup_globals();
     690
     691        if ( $post_id )
     692            $post_sql = $wpdb->prepare( " AND comment_post_id = %d", $post_id );
     693
     694        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_id) WHERE blog_id = %d{$post_sql}", $blog_id ) );
     695    }
     696
     697
     698    function is_recorded( $comment_id, $comment_post_id, $blog_id, $user_id = null ) {
     699        global $bp, $wpdb, $current_user;
     700
     701        if ( !$bp->blogs )
     702            bp_blogs_setup_globals();
     703
     704        if ( !$user_id )
     705            $user_id = $current_user->ID;
     706
     707        return $wpdb->get_var( $wpdb->prepare( "SELECT comment_id FROM {$bp->blogs->table_name_blog_comments} WHERE comment_id = %d AND blog_id = %d AND comment_post_id = %d AND user_id = %d", $comment_id, $blog_id, $comment_post_id, $user_id ) );
     708    }
     709
     710}
     711
    310712?>
Note: See TracChangeset for help on using the changeset viewer.