function bp_blogs_record_post($post_id, $blog_id = false, $user_id = false) { global $bp, $wpdb; $post_id = (int) $post_id; $post = get_post($post_id); if (!$user_id) { $user_id = (int) $post->post_author; } if (!$blog_id) { $blog_id = (int) $wpdb->blogid; } /* This is to stop infinate loops with Donncha's sitewide tags plugin */ if ((int) get_site_option('tags_blog_id') == (int) $blog_id) { return false; } /* Don't record this if it's not a post */ if ($post->post_type != 'post') { return false; } if (!($is_recorded = BP_Blogs_Post::is_recorded($post_id, $blog_id, $user_id))) { if ('publish' == $post->post_status && '' == $post->post_password) { $recorded_post = new BP_Blogs_Post(); $recorded_post->user_id = $user_id; $recorded_post->blog_id = $blog_id; $recorded_post->post_id = $post_id; $recorded_post->date_created = strtotime($post->post_date); $recorded_post_id = $recorded_post->save(); bp_blogs_update_blogmeta($recorded_post->blog_id, 'last_activity', time()); bp_blogs_record_activity(array('item_id' => $recorded_post->id, 'component_name' => 'blogs', 'component_action' => 'new_blog_post', 'is_private' => bp_blogs_is_blog_hidden($recorded_post->blog_id), 'user_id' => $recorded_post->user_id, 'recorded_time' => strtotime($post->post_date))); } } else { $existing_post = new BP_Blogs_Post(null, $blog_id, $post_id); /** * Delete the recorded post if: * - The status is no longer "published" * - The post is password protected */ if ('publish' != $post->post_status || '' != $post->post_password) { bp_blogs_remove_post($post_id, $blog_id); } // Check to see if the post author has changed. if ((int) $existing_post->user_id != (int) $post->post_author) { // Delete the existing recorded post bp_blogs_remove_post($post_id, $blog_id); // Re-record the post with the new author. bp_blogs_record_post($post_id); } $recorded_post = $existing_post; /* Delete and re-add the activity stream item to reflect potential content changes. */ bp_blogs_delete_activity(array('item_id' => $recorded_post->id, 'component_name' => 'blogs', 'component_action' => 'new_blog_post', 'user_id' => $recorded_post->user_id)); bp_blogs_record_activity(array('item_id' => $recorded_post->id, 'component_name' => 'blogs', 'component_action' => 'new_blog_post', 'is_private' => bp_blogs_is_blog_hidden($recorded_post->blog_id), 'user_id' => $recorded_post->user_id, 'recorded_time' => strtotime($post->post_date))); } do_action('bp_blogs_new_blog_post', $recorded_post, $is_private, $is_recorded); }