Changeset 2826
- Timestamp:
- 03/10/2010 12:03:43 PM (15 years ago)
- Location:
- branches/1.2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1.2/bp-blogs.php
r2794 r2826 26 26 KEY user_id (user_id), 27 27 KEY blog_id (blog_id) 28 ) {$charset_collate};";29 30 $sql[] = "CREATE TABLE {$bp->blogs->table_name_blog_posts} (31 id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,32 user_id bigint(20) NOT NULL,33 blog_id bigint(20) NOT NULL,34 post_id bigint(20) NOT NULL,35 date_created datetime NOT NULL,36 KEY user_id (user_id),37 KEY blog_id (blog_id),38 KEY post_id (post_id)39 ) {$charset_collate};";40 41 $sql[] = "CREATE TABLE {$bp->blogs->table_name_blog_comments} (42 id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,43 user_id bigint(20) NOT NULL,44 blog_id bigint(20) NOT NULL,45 comment_id bigint(20) NOT NULL,46 comment_post_id bigint(20) NOT NULL,47 date_created datetime NOT NULL,48 KEY user_id (user_id),49 KEY blog_id (blog_id),50 KEY comment_id (comment_id),51 KEY comment_post_id (comment_post_id)52 28 ) {$charset_collate};"; 53 29 … … 94 70 95 71 $bp->blogs->table_name = $wpdb->base_prefix . 'bp_user_blogs'; 96 $bp->blogs->table_name_blog_posts = $wpdb->base_prefix . 'bp_user_blogs_posts';97 $bp->blogs->table_name_blog_comments = $wpdb->base_prefix . 'bp_user_blogs_comments';98 72 $bp->blogs->table_name_blogmeta = $wpdb->base_prefix . 'bp_user_blogs_blogmeta'; 99 73 $bp->blogs->format_notification_function = 'bp_blogs_format_notifications'; … … 181 155 do_action( 'bp_blogs_screen_my_blogs' ); 182 156 bp_core_load_template( apply_filters( 'bp_blogs_template_my_blogs', 'members/single/home' ) ); 183 }184 185 function bp_blogs_screen_recent_posts() {186 do_action( 'bp_blogs_screen_recent_posts' );187 bp_core_load_template( apply_filters( 'bp_blogs_template_recent_posts', 'members/single/home' ) );188 }189 190 function bp_blogs_screen_recent_comments() {191 do_action( 'bp_blogs_screen_recent_comments' );192 bp_core_load_template( apply_filters( 'bp_blogs_template_recent_comments', 'members/single/home' ) );193 157 } 194 158 … … 331 295 } 332 296 333 334 297 function bp_blogs_record_existing_blogs() { 335 298 global $bp, $wpdb; … … 403 366 $user_id = (int)$post->post_author; 404 367 405 /* This is to stop infin ate loops with Donncha's sitewide tags plugin */368 /* This is to stop infinite loops with Donncha's sitewide tags plugin */ 406 369 if ( (int)$bp->site_options['tags_blog_id'] == (int)$blog_id ) 407 370 return false; … … 411 374 return false; 412 375 413 if ( !$is_recorded = BP_Blogs_Post::is_recorded( $post_id, $blog_id, $user_id ) ) { 414 if ( 'publish' == $post->post_status && '' == $post->post_password ) { 415 416 /* If we're on a multiblog install, record this post */ 417 if ( bp_core_is_multisite() ) { 418 $recorded_post = new BP_Blogs_Post; 419 $recorded_post->user_id = $user_id; 420 $recorded_post->blog_id = $blog_id; 421 $recorded_post->post_id = $post_id; 422 $recorded_post->date_created = strtotime( $post->post_date ); 423 424 $recorded_post_id = $recorded_post->save(); 425 426 bp_blogs_update_blogmeta( $recorded_post->blog_id, 'last_activity', gmdate( "Y-m-d H:i:s" ) ); 427 } 428 429 if ( (int)get_blog_option( $blog_id, 'blog_public' ) || !bp_core_is_multisite() ) { 430 /* Record this in activity streams */ 431 $post_permalink = get_permalink( $post_id ); 432 433 $activity_action = sprintf( __( '%s wrote a new blog post: %s', 'buddypress' ), bp_core_get_userlink( (int)$post->post_author ), '<a href="' . $post_permalink . '">' . $post->post_title . '</a>' ); 434 $activity_content = $post->post_content; 435 436 bp_blogs_record_activity( array( 437 'user_id' => (int)$post->post_author, 438 'action' => apply_filters( 'bp_blogs_activity_new_post_action', $activity_action, &$post, $post_permalink ), 439 'content' => apply_filters( 'bp_blogs_activity_new_post_content', $activity_content, &$post, $post_permalink ), 440 'primary_link' => apply_filters( 'bp_blogs_activity_new_post_primary_link', $post_permalink, $post_id ), 441 'type' => 'new_blog_post', 442 'item_id' => $blog_id, 443 'secondary_item_id' => $post_id, 444 'recorded_time' => $post->post_date_gmt 445 )); 446 } 447 } 448 } else { 449 $existing_post = new BP_Blogs_Post( null, $blog_id, $post_id ); 450 451 /* Delete the recorded post if the status is not published or it is password protected */ 452 if ( 'publish' != $post->post_status || '' != $post->post_password ) { 453 return bp_blogs_remove_post( $post_id, $blog_id, $existing_post ); 454 455 /* If the post author has changed, delete the post and re-add it. */ 456 } else if ( (int)$existing_post->user_id != (int)$post->post_author ) { 457 // Delete the existing recorded post 458 bp_blogs_remove_post( $post_id, $blog_id, $existing_post ); 459 460 // Re-record the post with the new author. 461 bp_blogs_record_post( $post_id ); 462 } 376 if ( 'publish' == $post->post_status && '' == $post->post_password ) { 377 bp_blogs_update_blogmeta( $recorded_post->blog_id, 'last_activity', gmdate( "Y-m-d H:i:s" ) ); 463 378 464 379 if ( (int)get_blog_option( $blog_id, 'blog_public' ) || !bp_core_is_multisite() ) { 465 /* Now re-record the post in theactivity streams */380 /* Record this in activity streams */ 466 381 $post_permalink = get_permalink( $post_id ); 467 382 … … 478 393 'secondary_item_id' => $post_id, 479 394 'recorded_time' => $post->post_date_gmt 480 ) 395 )); 481 396 } 482 } 483 484 do_action( 'bp_blogs_new_blog_post', $existing_post, $is_private, $is_recorded ); 397 } else 398 bp_blogs_remove_post( $post_id, $blog_id ); 399 400 do_action( 'bp_blogs_new_blog_post', $post_id, $post, $user_id ); 485 401 } 486 402 add_action( 'save_post', 'bp_blogs_record_post', 10, 2 ); 487 403 488 function bp_blogs_record_comment( $comment_id, $is_approved ) {404 function bp_blogs_record_comment( $comment_id, $is_approved = true ) { 489 405 global $wpdb, $bp; 490 491 if ( !$is_approved )492 return false;493 406 494 407 $comment = get_comment($comment_id); … … 505 418 if ( !empty( $post->post_password ) ) 506 419 return false; 507 508 /* If we're on a multiblog install, record this post */509 if ( bp_core_is_multisite() ) {510 $recorded_comment = new BP_Blogs_Comment;511 $recorded_comment->user_id = $user_id;512 $recorded_comment->blog_id = $wpdb->blogid;513 $recorded_comment->comment_id = $comment_id;514 $recorded_comment->comment_post_id = $comment->comment_post_ID;515 $recorded_comment->date_created = strtotime( $comment->comment_date_gmt );516 517 $recorded_commment_id = $recorded_comment->save();518 519 bp_blogs_update_blogmeta( $recorded_comment->blog_id, 'last_activity', gmdate( "Y-m-d H:i:s" ) );520 }521 420 522 421 if ( (int)get_blog_option( $recorded_comment->blog_id, 'blog_public' ) || !bp_core_is_multisite() ) { … … 542 441 } 543 442 add_action( 'comment_post', 'bp_blogs_record_comment', 10, 2 ); 443 add_action( 'edit_comment', 'bp_blogs_record_comment', 10 ); 544 444 545 445 function bp_blogs_manage_comment( $comment_id, $comment_status ) { … … 601 501 add_action( 'remove_user_from_blog', 'bp_blogs_remove_blog_for_user', 10, 2 ); 602 502 603 function bp_blogs_remove_post( $post_id, $blog_id = false , $existing_post = false) {503 function bp_blogs_remove_post( $post_id, $blog_id = false ) { 604 504 global $current_blog, $bp; 605 505 … … 609 509 $blog_id = (int)$current_blog->blog_id; 610 510 611 if ( !$existing_post )612 $existing_post = new BP_Blogs_Post( null, $blog_id, $post_id );613 614 // Delete post from the bp_blogs table615 BP_Blogs_Post::delete( $post_id, $blog_id );616 617 511 // Delete activity stream item 618 512 bp_blogs_delete_activity( array( 'item_id' => $blog_id, 'secondary_item_id' => $post_id, 'component' => $bp->blogs->slug, 'type' => 'new_blog_post' ) ); … … 624 518 function bp_blogs_remove_comment( $comment_id ) { 625 519 global $wpdb, $bp; 626 627 $recorded_comment = new BP_Blogs_Comment( false, $wpdb->blogid, $comment_id );628 BP_Blogs_Comment::delete( $comment_id, $wpdb->blogid );629 520 630 521 // Delete activity stream item … … 663 554 /* If this is regular blog, delete all data for that blog. */ 664 555 BP_Blogs_Blog::delete_blog_for_all( $blog_id ); 665 BP_Blogs_Post::delete_posts_for_blog( $blog_id );666 BP_Blogs_Comment::delete_comments_for_blog( $blog_id );667 556 668 557 // Delete activity stream item … … 677 566 } 678 567 679 /* DEPRECATED - scheduled for removal. Please use the activity stream with a 'new_blog_post' filter. */680 function bp_blogs_get_posts_for_user( $user_id ) {681 return BP_Blogs_Post::get_posts_for_user( $user_id );682 }683 684 /* DEPRECATED - scheduled for removal. Please use the activity stream with a 'new_blog_comment' filter. */685 function bp_blogs_get_comments_for_user( $user_id ) {686 return BP_Blogs_Comment::get_comments_for_user( $user_id );687 }688 689 function bp_blogs_get_latest_posts( $blog_id = null, $limit = 5 ) {690 global $bp;691 692 if ( !is_numeric( $limit ) )693 $limit = 5;694 695 return BP_Blogs_Post::get_latest_posts( $blog_id, $limit );696 }697 698 568 function bp_blogs_get_all_blogs( $limit = null, $page = null ) { 699 569 return BP_Blogs_Blog::get_all( $limit, $page ); … … 702 572 function bp_blogs_get_random_blogs( $limit = null, $page = null ) { 703 573 return BP_Blogs_Blog::get( 'random', $limit, $page ); 704 }705 706 function bp_blogs_get_all_posts( $limit = null, $page = null ) {707 return BP_Blogs_Post::get_all( $limit, $page );708 }709 710 function bp_blogs_total_post_count( $blog_id ) {711 return BP_Blogs_Post::total_post_count( $blog_id );712 }713 714 function bp_blogs_total_comment_count( $blog_id, $post_id = false ) {715 return BP_Blogs_Post::total_comment_count( $blog_id, $post_id );716 574 } 717 575 … … 834 692 /* If this is regular blog, delete all data for that blog. */ 835 693 BP_Blogs_Blog::delete_blogs_for_user( $user_id ); 836 BP_Blogs_Post::delete_posts_for_user( $user_id );837 BP_Blogs_Comment::delete_comments_for_user( $user_id );838 694 839 695 do_action( 'bp_blogs_remove_data', $user_id ); … … 867 723 } 868 724 869 function bp_blogs_clear_post_object_cache( $blog_id, $post_id, $user_id ) {870 wp_cache_delete( 'bp_user_posts_' . $user_id, 'bp' );871 }872 873 function bp_blogs_format_clear_post_cache( $recorded_post_obj ) {874 bp_blogs_clear_post_object_cache( false, false, $recorded_post_obj->user_id );875 876 /* Clear the sitewide activity cache */877 wp_cache_delete( 'sitewide_activity', 'bp' );878 }879 880 function bp_blogs_clear_comment_object_cache( $blog_id, $comment_id, $user_id ) {881 wp_cache_delete( 'bp_user_comments_' . $user_id, 'bp' );882 }883 884 function bp_blogs_format_clear_comment_cache( $recorded_comment_obj ) {885 bp_blogs_clear_comment_object_cache( false, false, $recorded_comment_obj->user_id );886 887 /* Clear the sitewide activity cache */888 wp_cache_delete( 'sitewide_activity', 'bp' );889 }890 891 725 // List actions to clear object caches on 892 726 add_action( 'bp_blogs_remove_blog_for_user', 'bp_blogs_clear_blog_object_cache', 10, 2 ); 893 add_action( 'bp_blogs_remove_post', 'bp_blogs_clear_post_object_cache', 10, 3 );894 add_action( 'bp_blogs_remove_comment', 'bp_blogs_clear_comment_object_cache', 10, 3 );895 896 727 add_action( 'bp_blogs_new_blog', 'bp_blogs_format_clear_blog_cache', 10, 2 ); 897 add_action( 'bp_blogs_new_blog_post', 'bp_blogs_format_clear_post_cache', 10, 2 );898 add_action( 'bp_blogs_new_blog_comment', 'bp_blogs_format_clear_comment_cache', 10, 2 );899 728 900 729 // List actions to clear super cached pages on, if super cache is installed -
branches/1.2/bp-blogs/bp-blogs-classes.php
r2772 r2826 279 279 return $paged_blogs; 280 280 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 } 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" ); 291 283 292 284 /* Fetch the blog description for each blog (as it may be empty we can't fetch it in the main query). */ … … 316 308 } 317 309 318 /* DEPRECATED - Post DB recording is scheduled for removal. Please use the activity stream to fetch a user's posts. */319 Class 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 else343 $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 // Update364 $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 // Save367 $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 else378 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. */527 Class 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 else555 $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 // Update577 $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 // Save580 $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 else591 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 712 310 ?>
Note: See TracChangeset
for help on using the changeset viewer.