<!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>[12860] sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php: Support Forums: Limit No Replies by voices over reply counts.</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 { white-space: pre-line; 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" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://meta.trac.wordpress.org/changeset/12860">12860</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://meta.trac.wordpress.org/changeset/12860","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>Clorith</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2023-08-24 17:54:28 +0000 (Thu, 24 Aug 2023)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Support Forums: Limit No Replies by voices over reply counts.

When any reply is made to a topic, they will be removed from the No Replies view, but this both limited OPs from adding details after the fact, and also means the Support Team needed guidelines to prevent "bumping".

This change converts the No Replies query to looking for "voices" (participants within a topic) over reply counts, which will allow additional details to be posted, and remove the need for rules against "bumping".

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginssupportforumsincclasshooksphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginssupportforumsincclasshooksphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php       2023-08-23 05:56:03 UTC (rev 12859)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php 2023-08-24 17:54:28 UTC (rev 12860)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -75,6 +75,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Limit no-replies view to a certain number of days and hide resolved topics.
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'bbp_register_view_no_replies', array( $this, 'limit_no_replies_view' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Allow topics with the OP adding more details to show up in no-replies view.
+               add_filter( 'bbp_register_view_no_replies', array( $this, 'make_no_replies_consider_voices' ), 20 );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Remove the description from the CPT to avoid Jetpack using it as the og:description.
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'bbp_register_forum_post_type', array( $this, 'bbp_register_forum_post_type' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -332,7 +335,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Redirect legacy urls to their new permastructure.
</span><span class="cx" style="display: block; padding: 0 10px">         *  - /users/$id & /profile/$slug to /users/$slug
</span><span class="cx" style="display: block; padding: 0 10px">         *  - /users/profile/* => /users/$slug/*
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  *
</ins><span class="cx" style="display: block; padding: 0 10px">          * See also: Support_Compat in inc/class-support-compat.php
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function redirect_legacy_urls() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -626,7 +629,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Single topic.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( bbp_is_single_topic() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $topic_id = bbp_get_topic_id();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         // Prepend label if thread is closed.
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( bbp_is_topic_closed( $topic_id ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: %s: Excerpt of the topic's first post. */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -930,6 +933,38 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Modifies the No Replies view to look at the amount of voices instead of replies.
+     *
+     * This allows a topic OP to provide additional details without their topic
+     * going away from the No Replies view.
+        *
+        * @param array $args Array of query args for the view.
+        * @return array
+        */
+       public function make_no_replies_consider_voices( $args ) {
+               /*
+                * Remove the default view arguments, in favor of a new meta_query instead.
+                * Looping over an array of defined keys allows us to be forward compatible
+                * if bbPress implements meta queries in the future.
+                */
+               $default_keys = array( 'meta_key', 'meta_type', 'meta_value', 'meta_compare' );
+               foreach ( $default_keys as $key ) {
+                       if ( isset( $args[ $key ] ) ) {
+                               unset( $args[ $key ] );
+                       }
+               }
+
+               $args['meta_query'][] = array(
+                       'key'     => '_bbp_voice_count',
+                       'type'    => 'NUMERIC',
+                       'value'   => 2,
+                       'compare' => '<',
+               );
+
+               return $args;
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Remove the Forum CPT description field to prevent Jetpack using it as the og:description on /forums/.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function bbp_register_forum_post_type( $args ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1270,7 +1305,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $content;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Alter the bbPress topic freshness links to use the date in the title attribute rather than thread title.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1303,7 +1338,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Filter the topic subscription message to 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Filter the topic subscription message to
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function bbp_subscription_mail_message( $message, $reply_id, $topic_id ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $reply_author_name = bbp_get_reply_author_display_name( $reply_id );
</span></span></pre>
</div>
</div>

</body>
</html>