<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][7407] trunk/bp-blogs: Inline docs improvements in Blogs component:</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://buddypress.trac.wordpress.org/changeset/7407">7407</a></dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2013-10-10 14:44:05 +0000 (Thu, 10 Oct 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>Inline docs improvements in Blogs component:

- bp-blogs-actions.php
- bp-blogs-activity.php
- bp-blogs-buddybar.php
- bp-blogs-cache.php
- bp-blogs-classes.php

See <a href="http://buddypress.trac.wordpress.org/ticket/5022">#5022</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpblogsbpblogsactionsphp">trunk/bp-blogs/bp-blogs-actions.php</a></li>
<li><a href="#trunkbpblogsbpblogsactivityphp">trunk/bp-blogs/bp-blogs-activity.php</a></li>
<li><a href="#trunkbpblogsbpblogsbuddybarphp">trunk/bp-blogs/bp-blogs-buddybar.php</a></li>
<li><a href="#trunkbpblogsbpblogscachephp">trunk/bp-blogs/bp-blogs-cache.php</a></li>
<li><a href="#trunkbpblogsbpblogsclassesphp">trunk/bp-blogs/bp-blogs-classes.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpblogsbpblogsactionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-actions.php (7406 => 7407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-actions.php      2013-10-10 14:44:00 UTC (rev 7406)
+++ trunk/bp-blogs/bp-blogs-actions.php 2013-10-10 14:44:05 UTC (rev 7407)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> <?php
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * BuddyPress Blogs Actions
</del><ins>+ * BuddyPress Blogs Actions.
</ins><span class="cx">  *
</span><span class="cx">  * @package BuddyPress
</span><span class="cx">  * @subpackage BlogsActions
</span><span class="lines">@@ -11,11 +11,9 @@
</span><span class="cx"> if ( !defined( 'ABSPATH' ) ) exit;
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Redirect to a random blog in the multisite network
</del><ins>+ * Redirect to a random blog in the multisite network.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsActions
</del><span class="cx">  */
</span><span class="cx"> function bp_blogs_redirect_to_random_blog() {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpblogsbpblogsactivityphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-activity.php (7406 => 7407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-activity.php     2013-10-10 14:44:00 UTC (rev 7406)
+++ trunk/bp-blogs/bp-blogs-activity.php        2013-10-10 14:44:05 UTC (rev 7407)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> <?php
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * BuddyPress Blogs Activity
</del><ins>+ * BuddyPress Blogs Activity.
</ins><span class="cx">  *
</span><span class="cx">  * @package BuddyPress
</span><span class="cx">  * @subpackage BlogsActivity
</span><span class="lines">@@ -11,13 +11,13 @@
</span><span class="cx"> if ( !defined( 'ABSPATH' ) ) exit;
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Register activity actions for the blogs component
</del><ins>+ * Register activity actions for the blogs component.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsActivity
- * @global type $bp
- * @return boolean
</del><ins>+ *
+ * @global object $bp The BuddyPress global settings object.
+ *
+ * @return bool|null Returns false if activity component is not active.
</ins><span class="cx">  */
</span><span class="cx"> function bp_blogs_register_activity_actions() {
</span><span class="cx">  global $bp;
</span><span class="lines">@@ -39,14 +39,19 @@
</span><span class="cx"> add_action( 'bp_register_activity_actions', 'bp_blogs_register_activity_actions' );
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Record the activity to the actvity stream
</del><ins>+ * Record blog-related activity to the activity stream.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsActivity
- * @global BuddyPress $bp
- * @param array $args
- * @return boolean
</del><ins>+ *
+ * @see bp_activity_add() for description of parameters.
+ * @global object $bp The BuddyPress global settings object.
+ *
+ * @param array $args {
+ *     See {@link bp_activity_add()} for complete description of arguments.
+ *     The arguments listed here have different default values from bp_activity_add().
+ *     @type string $component Default: 'blogs'.
+ * }
+ * @return int|bool On success, returns the activity ID. False on failure.
</ins><span class="cx">  */
</span><span class="cx"> function bp_blogs_record_activity( $args = '' ) {
</span><span class="cx">  global $bp;
</span><span class="lines">@@ -94,13 +99,19 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Delete a blogs activity stream item
</del><ins>+ * Delete a blog-related activity stream item.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsActivity
- * @global BuddyPress $bp
- * @param array $args
</del><ins>+ *
+ * @see bp_activity_delete() for description of parameters.
+ * @global object $bp The BuddyPress global settings object.
+ *
+ * @param array $args {
+ *     See {@link bp_activity_delete()} for complete description of arguments.
+ *     The arguments listed here have different default values from bp_activity_add().
+ *     @type string $component Default: 'blogs'.
+ * }
+ * @return bool True on success, false on failure.
</ins><span class="cx">  */
</span><span class="cx"> function bp_blogs_delete_activity( $args = true ) {
</span><span class="cx">  global $bp;
</span></span></pre></div>
<a id="trunkbpblogsbpblogsbuddybarphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-buddybar.php (7406 => 7407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-buddybar.php     2013-10-10 14:44:00 UTC (rev 7406)
+++ trunk/bp-blogs/bp-blogs-buddybar.php        2013-10-10 14:44:05 UTC (rev 7407)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> <?php
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * BuddyPress Blogs Activity
</del><ins>+ * BuddyPress Blogs BuddyBar functions.
</ins><span class="cx">  *
</span><span class="cx">  * @package BuddyPress
</span><span class="cx">  * @subpackage BlogsBuddyBar
</span><span class="lines">@@ -11,13 +11,12 @@
</span><span class="cx"> if ( !defined( 'ABSPATH' ) ) exit;
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Add a Sites menu to the BuddyBar
</del><ins>+ * Add a Sites menu to the BuddyBar.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsBuddyBar
- * @global BuddyPress $bp
- * @return boolean
</del><ins>+ *
+ * @global object $bp The BuddyPress global settings object.
+ * @return bool|null Returns false on failure. Otherwise echoes the menu item.
</ins><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> function bp_adminbar_blogs_menu() {
</span></span></pre></div>
<a id="trunkbpblogsbpblogscachephp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-cache.php (7406 => 7407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-cache.php        2013-10-10 14:44:00 UTC (rev 7406)
+++ trunk/bp-blogs/bp-blogs-cache.php   2013-10-10 14:44:05 UTC (rev 7407)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> <?php
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * BuddyPress Blogs Caching
</del><ins>+ * BuddyPress Blogs Caching.
</ins><span class="cx">  *
</span><span class="cx">  * Caching functions handle the clearing of cached objects and pages on specific
</span><span class="cx">  * actions throughout BuddyPress.
</span><span class="lines">@@ -14,13 +14,12 @@
</span><span class="cx"> if ( !defined( 'ABSPATH' ) ) exit;
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Clear the blog object cache
</del><ins>+ * Clear the blog object cache.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsCache
- * @param int $blog_id
- * @param int $user_id
</del><ins>+ *
+ * @param int $blog_id ID of the current blog.
+ * @param int $user_id ID of the user whose blog cache should be cleared.
</ins><span class="cx">  */
</span><span class="cx"> function bp_blogs_clear_blog_object_cache( $blog_id, $user_id ) {
</span><span class="cx">  wp_cache_delete( 'bp_blogs_of_user_'        . $user_id, 'bp' );
</span><span class="lines">@@ -28,12 +27,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Clear cache when a new blog is created
</del><ins>+ * Clear cache when a new blog is created.
</ins><span class="cx">  *
</span><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsCache
- * @param BP_Blogs_Blog $recorded_blog_obj
</del><ins>+ *
+ * @param BP_Blogs_Blog $recorded_blog_obj The recorded blog, passed by 'bp_blogs_new_blog'.
</ins><span class="cx">  */
</span><span class="cx"> function bp_blogs_format_clear_blog_cache( $recorded_blog_obj ) {
</span><span class="cx">  bp_blogs_clear_blog_object_cache( false, $recorded_blog_obj->user_id );
</span></span></pre></div>
<a id="trunkbpblogsbpblogsclassesphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-classes.php (7406 => 7407)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-classes.php      2013-10-10 14:44:00 UTC (rev 7406)
+++ trunk/bp-blogs/bp-blogs-classes.php 2013-10-10 14:44:05 UTC (rev 7407)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> <?php
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * BuddyPress Blogs Classes
</del><ins>+ * BuddyPress Blogs Classes.
</ins><span class="cx">  *
</span><span class="cx">  * @package BuddyPress
</span><span class="cx">  * @subpackage BlogsClasses
</span><span class="lines">@@ -11,17 +11,23 @@
</span><span class="cx"> if ( !defined( 'ABSPATH' ) ) exit;
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * The main BuddyPress blog class
</del><ins>+ * The main BuddyPress blog class.
</ins><span class="cx">  *
</span><ins>+ * A BP_Blogs_Object represents a link between a specific WordPress blog on a
+ * network and a specific user on that blog.
+ *
</ins><span class="cx">  * @since BuddyPress (1.0)
</span><del>- * @package BuddyPress
- * @subpackage BlogsClasses
</del><span class="cx">  */
</span><span class="cx"> class BP_Blogs_Blog {
</span><span class="cx">  public $id;
</span><span class="cx">  public $user_id;
</span><span class="cx">  public $blog_id;
</span><span class="cx"> 
</span><ins>+       /**
+        * Constructor method.
+        *
+        * @param int $id Optional. The ID of the blog.
+        */
</ins><span class="cx">   public function __construct( $id = null ) {
</span><span class="cx">          if ( !empty( $id ) ) {
</span><span class="cx">                  $this->id = $id;
</span><span class="lines">@@ -29,6 +35,9 @@
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Populate the object with data about the specific activity item.
+        */
</ins><span class="cx">   public function populate() {
</span><span class="cx">          global $wpdb, $bp;
</span><span class="cx"> 
</span><span class="lines">@@ -38,6 +47,11 @@
</span><span class="cx">          $this->blog_id = $blog->blog_id;
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Save the BP blog data to the database.
+        *
+        * @return bool True on success, false on failure.
+        */
</ins><span class="cx">   public function save() {
</span><span class="cx">          global $wpdb, $bp;
</span><span class="cx"> 
</span><span class="lines">@@ -73,14 +87,37 @@
</span><span class="cx">                  return $wpdb->insert_id;
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Check whether an association between this user and this blog exists.
+        *
+        * @return int The number of associations between the user and blog
+        *         saved in the blog component tables.
+        */
</ins><span class="cx">   public function exists() {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="cx">          return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->blogs->table_name} WHERE user_id = %d AND blog_id = %d", $this->user_id, $this->blog_id ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><del>-       /* Static Functions */
</del><ins>+        /** Static Methods ***************************************************/
</ins><span class="cx"> 
</span><ins>+       /**
+        * Retrieve a set of blog-user associations.
+        *
+        * @param string $type The order in which results should be returned.
+        *        'active', 'alphabetical', 'newest', or 'random'.
+        * @param int|bool $limit Optional. The maximum records to return.
+        *        Default: false.
+        * @param int|bool $page Optional. The page of records to return.
+        *        Default: false (unlimited results).
+        * @param int $user_id Optional. ID of the user whose blogs are being
+        *        retrieved. Default: 0.
+        * @param string|bool $search_terms Optional. Search by text stored in
+        *        blogmeta (such as the blog name). Default: false.
+        * @return array Multidimensional results array, structured as follows:
+        *           'blogs' - Array of located blog objects
+        *           'total' - A count of the total blogs matching the filter params
+        */
</ins><span class="cx">   public static function get( $type, $limit = false, $page = false, $user_id = 0, $search_terms = false ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -127,6 +164,12 @@
</span><span class="cx">          return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Delete the record of a given blog for all users.
+        *
+        * @param int $blog_id The blog being removed from all users.
+        * @return int|bool Number of rows deleted on success, false on failure.
+        */
</ins><span class="cx">   public static function delete_blog_for_all( $blog_id ) {
</span><span class="cx">          global $wpdb, $bp;
</span><span class="cx"> 
</span><span class="lines">@@ -134,6 +177,14 @@
</span><span class="cx">          return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Delete the record of a given blog for a specific user.
+        *
+        * @param int $blog_id The blog being removed.
+        * @param int $user_id Optional. The ID of the user from whom the blog
+        *        is being removed. If absent, defaults to the logged-in user ID.
+        * @return int|bool Number of rows deleted on success, false on failure.
+        */
</ins><span class="cx">   public static function delete_blog_for_user( $blog_id, $user_id = null ) {
</span><span class="cx">          global $wpdb, $bp;
</span><span class="cx"> 
</span><span class="lines">@@ -143,6 +194,14 @@
</span><span class="cx">          return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name} WHERE user_id = %d AND blog_id = %d", $user_id, $blog_id ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Delete all of a user's blog associations in the BP tables.
+        *
+        * @param int $user_id Optional. The ID of the user whose blog
+        *        associations are being deleted. If absent, defaults to
+        *        logged-in user ID.
+        * @return int|bool Number of rows deleted on success, false on failure.
+        */
</ins><span class="cx">   public static function delete_blogs_for_user( $user_id = null ) {
</span><span class="cx">          global $wpdb, $bp;
</span><span class="cx"> 
</span><span class="lines">@@ -152,6 +211,23 @@
</span><span class="cx">          return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Get all of a user's blogs, as tracked by BuddyPress.
+        *
+        * Note that this is different from the WordPress function {@link get_blogs_of_user()};
+        * the current method returns only those blogs that have been recorded
+        * by BuddyPress, while the WP function does a true query of a user's
+        * blog capabilities.
+        *
+        * @param int $user_id Optional. ID of the user whose blogs are being
+        *        queried. Defaults to logged-in user.
+        * @param bool $show_hidden Optional. Whether to include blogs that are
+        *        not marked public. Defaults to true when viewing one's own
+        *        profile.
+        * @return array Multidimensional results array, structured as follows:
+        *           'blogs' - Array of located blog objects
+        *           'total' - A count of the total blogs for the user.
+        */
</ins><span class="cx">   public static function get_blogs_for_user( $user_id = 0, $show_hidden = false ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -178,6 +254,15 @@
</span><span class="cx">          return array( 'blogs' => $user_blogs, 'count' => $total_blog_count );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Get IDs of all of a user's blogs, as tracked by BuddyPress.
+        *
+        * This method always includes hidden blogs.
+        *
+        * @param int $user_id Optional. ID of the user whose blogs are being
+        *        queried. Defaults to logged-in user.
+        * @return int The number of blogs associated with the user.
+        */
</ins><span class="cx">   public static function get_blog_ids_for_user( $user_id = 0 ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -187,12 +272,30 @@
</span><span class="cx">          return $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Check whether a blog has been recorded by BuddyPress.
+        *
+        * @param int $blog_id ID of the blog being queried.
+        * @return int|null The ID of the first located entry in the BP table
+        *         on success, otherwise null.
+        */
</ins><span class="cx">   public static function is_recorded( $blog_id ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="cx">          return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Return a count of associated blogs for a given user.
+        *
+        * Includes hidden blogs when the logged-in user is the same as the
+        * $user_id parameter, or when the logged-in user has the bp_moderate
+        * cap.
+        *
+        * @param int $user_id Optional. ID of the user whose blogs are being
+        *        queried. Defaults to logged-in user.
+        * @return int Blog count for the user.
+        */
</ins><span class="cx">   public static function total_blog_count_for_user( $user_id = null ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -207,6 +310,21 @@
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Return a list of blogs matching a search term.
+        *
+        * Matches against blog names and descriptions, as stored in the BP
+        * blogmeta table.
+        *
+        * @param string $filter The search term.
+        * @param int $limit Optional. The maximum number of items to return.
+        *        Default: null (no limit).
+        * @param int $page Optional. The page of results to return. Default:
+        *        null (no limit).
+        * @return array Multidimensional results array, structured as follows:
+        *           'blogs' - Array of located blog objects
+        *           'total' - A count of the total blogs matching the query.
+        */
</ins><span class="cx">   public static function search_blogs( $filter, $limit = null, $page = null ) {
</span><span class="cx">          global $wpdb, $bp;
</span><span class="cx"> 
</span><span class="lines">@@ -226,6 +344,20 @@
</span><span class="cx">          return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Retrieve a list of all blogs.
+        *
+        * Query will include hidden blogs if the logged-in user has the
+        * 'bp_moderate' cap.
+        *
+        * @param int $limit Optional. The maximum number of items to return.
+        *        Default: null (no limit).
+        * @param int $page Optional. The page of results to return. Default:
+        *        null (no limit).
+        * @return array Multidimensional results array, structured as follows:
+        *           'blogs' - Array of located blog objects
+        *           'total' - A count of the total blogs.
+        */
</ins><span class="cx">   public static function get_all( $limit = null, $page = null ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -238,6 +370,21 @@
</span><span class="cx">          return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Retrieve a list of blogs whose names start with a given letter.
+        *
+        * Query will include hidden blogs if the logged-in user has the
+        * 'bp_moderate' cap.
+        *
+        * @param string $letter. The letter you're looking for.
+        * @param int $limit Optional. The maximum number of items to return.
+        *        Default: null (no limit).
+        * @param int $page Optional. The page of results to return. Default:
+        *        null (no limit).
+        * @return array Multidimensional results array, structured as follows:
+        *           'blogs' - Array of located blog objects.
+        *           'total' - A count of the total blogs matching the query.
+        */
</ins><span class="cx">   public static function get_by_letter( $letter, $limit = null, $page = null ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -256,6 +403,20 @@
</span><span class="cx">          return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Fetch blog data not caught in the main query and append it to results array.
+        *
+        * Gets the following information, which is either unavailable at the
+        * time of the original query, or is more efficient to look up in one
+        * fell swoop:
+        *   - The latest post for each blog, include Featured Image data
+        *   - The blog description
+        *
+        * @param array $paged_blogs Array of results from the original query.
+        * @param array $blog_ids Array of IDs returned from the original query.
+        * @param string|bool $type Not currently used. Default: false.
+        * @return array $paged_blogs The located blogs array, with the extras added.
+        */
</ins><span class="cx">   public static function get_blog_extras( &$paged_blogs, &$blog_ids, $type = false ) {
</span><span class="cx">          global $bp, $wpdb;
</span><span class="cx"> 
</span><span class="lines">@@ -310,6 +471,14 @@
</span><span class="cx">          return $paged_blogs;
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Check whether a given blog is hidden.
+        *
+        * Checks the 'public' column in the wp_blogs table.
+        *
+        * @param int $blog_id The ID of the blog being checked.
+        * @return bool True if hidden (public = 0), false otherwise.
+        */
</ins><span class="cx">   public static function is_hidden( $blog_id ) {
</span><span class="cx">          global $wpdb;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>