<!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][5047] trunk: Fixes total found topic count for Started Topics and Replied To tabs on user profiles.</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, #logmsg > ol { margin-left: 0; 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/5047">5047</a></dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2011-08-29 22:43:45 +0000 (Mon, 29 Aug 2011)</dd>
</dl>

<h3>Log Message</h3>
<pre>Fixes total found topic count for Started Topics and Replied To tabs on user profiles. Adds template tags to check whether you're looking at Started Topics or Replied To. Fixes class name in members/single/forums.php so that AJAX pagination works correctly. Fixes <a href="http://buddypress.trac.wordpress.org/ticket/3431">#3431</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpcorebpcoretemplatephp">trunk/bp-core/bp-core-template.php</a></li>
<li><a href="#trunkbpforumsbpforumsfunctionsphp">trunk/bp-forums/bp-forums-functions.php</a></li>
<li><a href="#trunkbpforumsbpforumstemplatephp">trunk/bp-forums/bp-forums-template.php</a></li>
<li><a href="#trunkbpthemesbpdefaultforumsindexphp">trunk/bp-themes/bp-default/forums/index.php</a></li>
<li><a href="#trunkbpthemesbpdefaultmemberssingleforumsphp">trunk/bp-themes/bp-default/members/single/forums.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpcorebpcoretemplatephp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-template.php (5046 => 5047)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-template.php        2011-08-29 20:55:22 UTC (rev 5046)
+++ trunk/bp-core/bp-core-template.php        2011-08-29 22:43:45 UTC (rev 5047)
</span><span class="lines">@@ -1134,15 +1134,50 @@
</span><span class="cx">         return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+/**
+ * Is this a user's forums page?
+ *
+ * @package BuddyPress
+ *
+ * @return bool
+ */
</ins><span class="cx"> function bp_is_user_forums() {
</span><del>-        global $bp;
-
</del><span class="cx">         if ( bp_is_current_component( 'forums' ) )
</span><span class="cx">                 return true;
</span><span class="cx"> 
</span><span class="cx">         return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+/**
+ * Is this a user's &quot;Topics Started&quot; page?
+ *
+ * @package BuddyPress
+ * @since 1.5
+ *
+ * @return bool
+ */
+function bp_is_user_forums_started() {
+        if ( bp_is_current_component( 'forums' ) &amp;&amp; bp_is_current_action( 'topics' ) )
+                return true;
+
+        return false;
+}
+
+/**
+ * Is this a user's &quot;Replied To&quot; page?
+ *
+ * @package BuddyPress
+ * @since 1.5
+ *
+ * @return bool
+ */
+function bp_is_user_forums_replied_to() {
+        if ( bp_is_current_component( 'forums' ) &amp;&amp; bp_is_current_action( 'replies' ) )
+                return true;
+
+        return false;
+}
+
</ins><span class="cx"> function bp_is_user_groups() {
</span><span class="cx">         global $bp;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpforumsbpforumsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-forums/bp-forums-functions.php (5046 => 5047)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-forums/bp-forums-functions.php        2011-08-29 20:55:22 UTC (rev 5046)
+++ trunk/bp-forums/bp-forums-functions.php        2011-08-29 22:43:45 UTC (rev 5047)
</span><span class="lines">@@ -309,6 +309,46 @@
</span><span class="cx">         return $count;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+/**
+ * Return the total number of topics replied to by a given user
+ *
+ * Uses an unfortunate technique to count unique topics, due to limitations in BB_Query.
+ *
+ * @package BuddyPress
+ * @since 1.5
+ *
+ * @param int $user_id Defaults to displayed user, then to logged-in user
+ * @return int $count
+ */
+function bp_forums_total_replied_count_for_user( $user_id = 0 ) {
+        global $bp;
+
+        do_action( 'bbpress_init' );
+
+        if ( !$user_id )
+                $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id();
+
+        if ( !$user_id )
+                return 0;
+
+        if ( class_exists( 'BB_Query' ) ) {
+                $query = new BB_Query( 'post', array( 'post_author_id' =&gt; $user_id, 'page' =&gt; 1, 'per_page' =&gt; -1, 'count' =&gt; true ) );
+
+                // Count the unique topics. No better way to do this in the bbPress query API
+                $topics = array();
+                foreach( $query-&gt;results as $result ) {
+                        if ( !in_array( $result-&gt;topic_id, $topics ) )
+                                $topics[] = $result-&gt;topic_id;
+                }
+                $count = count( $topics );
+                $query = null;
+        } else {
+                $count = 0;
+        }
+
+        return apply_filters( 'bp_forums_total_replied_count_for_user', $count, $user_id );
+}
+
</ins><span class="cx"> function bp_forums_get_topic_extras( $topics ) {
</span><span class="cx">         global $bp, $wpdb, $bbdb;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpforumsbpforumstemplatephp"></a>
<div class="modfile"><h4>Modified: trunk/bp-forums/bp-forums-template.php (5046 => 5047)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-forums/bp-forums-template.php        2011-08-29 20:55:22 UTC (rev 5046)
+++ trunk/bp-forums/bp-forums-template.php        2011-08-29 22:43:45 UTC (rev 5047)
</span><span class="lines">@@ -141,6 +141,10 @@
</span><span class="cx">                                 $topic_count = (int)$topic_count-&gt;topics;
</span><span class="cx">                         } else if ( !empty( $bp-&gt;groups-&gt;current_group ) ) {
</span><span class="cx">                                 $topic_count = (int)groups_total_public_forum_topic_count( $type );
</span><ins>+                        } else if ( bp_is_user_forums_started() ) {
+                                $topic_count = bp_forums_total_topic_count_for_user( bp_displayed_user_id() );
+                        } else if ( bp_is_user_forums_replied_to() ) {
+                                $topic_count = bp_forums_total_replied_count_for_user( bp_displayed_user_id() );
</ins><span class="cx">                         } else {
</span><span class="cx">                                 // For forum directories, get a true count
</span><span class="cx">                                 $status = is_super_admin() ? 'all' : 'public'; // todo: member-of
</span></span></pre></div>
<a id="trunkbpthemesbpdefaultforumsindexphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-themes/bp-default/forums/index.php (5046 => 5047)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-themes/bp-default/forums/index.php        2011-08-29 20:55:22 UTC (rev 5046)
+++ trunk/bp-themes/bp-default/forums/index.php        2011-08-29 22:43:45 UTC (rev 5047)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx">  * @subpackage bp-default
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-?&gt;
</del><ins>+?&gt;htnshtsn
</ins><span class="cx"> 
</span><span class="cx"> &lt;?php get_header( 'buddypress' ); ?&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -150,9 +150,9 @@
</span><span class="cx"> 
</span><span class="cx">                                 &lt;?php endif; ?&gt;
</span><span class="cx">                         &lt;/div&gt;&lt;!-- #new-topic-post --&gt;
</span><del>-                        
</del><ins>+
</ins><span class="cx">                         &lt;?php do_action( 'bp_after_new_topic_form' ); ?&gt;
</span><del>-                        
</del><ins>+
</ins><span class="cx">                         &lt;?php do_action( 'bp_after_directory_forums_content' ); ?&gt;
</span><span class="cx"> 
</span><span class="cx">                 &lt;/div&gt;&lt;!-- .padder --&gt;
</span></span></pre></div>
<a id="trunkbpthemesbpdefaultmemberssingleforumsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-themes/bp-default/members/single/forums.php (5046 => 5047)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-themes/bp-default/members/single/forums.php        2011-08-29 20:55:22 UTC (rev 5046)
+++ trunk/bp-themes/bp-default/members/single/forums.php        2011-08-29 22:43:45 UTC (rev 5047)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> else :
</span><span class="cx">         do_action( 'bp_before_member_forums_content' ); ?&gt;
</span><span class="cx"> 
</span><del>-        &lt;div class=&quot;groups mygroups&quot;&gt;
</del><ins>+        &lt;div class=&quot;forums myforums&quot;&gt;
</ins><span class="cx"> 
</span><span class="cx">                 &lt;?php locate_template( array( 'forums/forums-loop.php' ), true ); ?&gt;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>