<!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][6044] trunk: Fixes pagination for notices.</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/6044">6044</a></dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2012-05-24 20:58:49 +0000 (Thu, 24 May 2012)</dd>
</dl>

<h3>Log Message</h3>
<pre>Fixes pagination for notices.

The Notices template has always show pagination markup, but the database
and template classes were never designed to handle pagination. This changeset
introduces the necessary logic in BP_Messages_Notice::get_notice() for
pagination to work.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpmessagesbpmessagesclassesphp">trunk/bp-messages/bp-messages-classes.php</a></li>
<li><a href="#trunkbpmessagesbpmessagestemplatephp">trunk/bp-messages/bp-messages-template.php</a></li>
<li><a href="#trunkbpthemesbpdefaultmemberssinglemessagesnoticesloopphp">trunk/bp-themes/bp-default/members/single/messages/notices-loop.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpmessagesbpmessagesclassesphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-messages/bp-messages-classes.php (6043 => 6044)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-messages/bp-messages-classes.php        2012-05-18 22:36:12 UTC (rev 6043)
+++ trunk/bp-messages/bp-messages-classes.php        2012-05-24 20:58:49 UTC (rev 6044)
</span><span class="lines">@@ -508,10 +508,31 @@
</span><span class="cx"> 
</span><span class="cx">         // Static Functions
</span><span class="cx"> 
</span><del>-        function get_notices() {
</del><ins>+        /**
+         * Pulls up a list of notices
+         *
+         * To get all notices, pass a value of -1 to pag_num
+         *
+         * @param array $args See $defaults for explanation of accepted arguments
+         * @return array $notices
+         */
+        function get_notices( $args = array() ) {
</ins><span class="cx">                 global $wpdb, $bp;
</span><span class="cx"> 
</span><del>-                $notices = $wpdb-&gt;get_results( $wpdb-&gt;prepare( &quot;SELECT * FROM {$bp-&gt;messages-&gt;table_name_notices} ORDER BY date_sent DESC&quot; ) );
</del><ins>+                $defaults = array(
+                        'pag_num'  =&gt; 20, // Number of notices per page
+                        'pag_page' =&gt; 1   // Page number
+                );
+                $r = wp_parse_args( $args, $defaults );
+                extract( $r );
+
+                $limit_sql = '';
+                if ( (int) $pag_num &gt;= 0 ) {
+                        $limit_sql = $wpdb-&gt;prepare( &quot;LIMIT %d, %d&quot;, (int) ( ( $pag_page - 1 ) * $pag_num ), (int) $pag_num );
+                }
+
+                $notices = $wpdb-&gt;get_results( $wpdb-&gt;prepare( &quot;SELECT * FROM {$bp-&gt;messages-&gt;table_name_notices} ORDER BY date_sent DESC {$limit_sql}&quot; ) );
+
</ins><span class="cx">                 return $notices;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpmessagesbpmessagestemplatephp"></a>
<div class="modfile"><h4>Modified: trunk/bp-messages/bp-messages-template.php (6043 => 6044)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-messages/bp-messages-template.php        2012-05-18 22:36:12 UTC (rev 6043)
+++ trunk/bp-messages/bp-messages-template.php        2012-05-24 20:58:49 UTC (rev 6044)
</span><span class="lines">@@ -39,7 +39,10 @@
</span><span class="cx">                 $this-&gt;search_terms = $search_terms;
</span><span class="cx"> 
</span><span class="cx">                 if ( 'notices' == $this-&gt;box ) {
</span><del>-                        $this-&gt;threads = BP_Messages_Notice::get_notices();
</del><ins>+                        $this-&gt;threads = BP_Messages_Notice::get_notices( array(
+                                'pag_num'  =&gt; $this-&gt;pag_num,
+                                'pag_page' =&gt; $this-&gt;pag_page
+                        ) );
</ins><span class="cx">                 } else {
</span><span class="cx">                         $threads = BP_Messages_Thread::get_current_threads_for_user( $this-&gt;user_id, $this-&gt;box, $this-&gt;type, $this-&gt;pag_num, $this-&gt;pag_page, $this-&gt;search_terms );
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpthemesbpdefaultmemberssinglemessagesnoticesloopphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-themes/bp-default/members/single/messages/notices-loop.php (6043 => 6044)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-themes/bp-default/members/single/messages/notices-loop.php        2012-05-18 22:36:12 UTC (rev 6043)
+++ trunk/bp-themes/bp-default/members/single/messages/notices-loop.php        2012-05-24 20:58:49 UTC (rev 6044)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx"> 
</span><span class="cx"> &lt;?php if ( bp_has_message_threads() ) : ?&gt;
</span><span class="cx"> 
</span><del>-        &lt;div class=&quot;pagination&quot; id=&quot;user-pag&quot;&gt;
</del><ins>+        &lt;div class=&quot;pagination no-ajax&quot; id=&quot;user-pag&quot;&gt;
</ins><span class="cx"> 
</span><span class="cx">                 &lt;div class=&quot;pag-count&quot; id=&quot;messages-dir-count&quot;&gt;
</span><span class="cx">                         &lt;?php bp_messages_pagination_count(); ?&gt;
</span></span></pre>
</div>
</div>

</body>
</html>