<!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][11644] trunk/src: Restore default behavior of message link generating functions.</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" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://buddypress.trac.wordpress.org/changeset/11644">11644</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://buddypress.trac.wordpress.org/changeset/11644","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>boonebgorges</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2017-07-13 19:11:00 +0000 (Thu, 13 Jul 2017)</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'>Restore default behavior of message link generating functions.

Prior to <a href="http://buddypress.trac.wordpress.org/changeset/11578">[11578]</a>, functions for generating links in the context of
messages (Mark Read, Delete, etc) were generated relative to the
logged-in user. This made it impossible for an administrator to
manage another user's messages. <a href="http://buddypress.trac.wordpress.org/changeset/11578">[11578]</a> changed the default behavior
of these functions to reference the displayed user. But this change
breaks backward compatibility for functions expecting the prior
behavior, including BP's own message notification format functions.

We work around the limitation by introducing `$user_id` parameters
to the functions in question. `$user_id` defaults to the logged-in
user (for backward compatibilty), and the bp-legacy template passes
in the displayed user ID as appropriate.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpmessagesbpmessagestemplatephp">trunk/src/bp-messages/bp-messages-template.php</a></li>
<li><a href="#trunksrcbptemplatesbplegacybuddypressmemberssinglemessagesmessagesloopphp">trunk/src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpmessagesbpmessagestemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-messages/bp-messages-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-messages/bp-messages-template.php    2017-07-13 19:10:44 UTC (rev 11643)
+++ trunk/src/bp-messages/bp-messages-template.php      2017-07-13 19:11:00 UTC (rev 11644)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -273,20 +273,28 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Output the permalink for a particular thread.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 2.9.0 Introduced `$user_id` parameter.
+ *
</ins><span class="cx" style="display: block; padding: 0 10px">  * @param int $thread_id Optional. ID of the thread. Default: current thread
</span><span class="cx" style="display: block; padding: 0 10px">  *                       being iterated on in the loop.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param int $user_id   Optional. ID of the user relative to whom the link
+ *                       should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function bp_message_thread_view_link( $thread_id = 0 ) {
-       echo bp_get_message_thread_view_link( $thread_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function bp_message_thread_view_link( $thread_id = 0, $user_id = null ) {
+       echo bp_get_message_thread_view_link( $thread_id, $user_id );
</ins><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">         * Get the permalink of a particular thread.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 2.9.0 Introduced `$user_id` parameter.
+        *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param int $thread_id Optional. ID of the thread. Default: current
</span><span class="cx" style="display: block; padding: 0 10px">         *                       thread being iterated on in the loop.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param int $user_id   Optional. ID of the user relative to whom the link
+        *                       should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function bp_get_message_thread_view_link( $thread_id = 0 ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ function bp_get_message_thread_view_link( $thread_id = 0, $user_id = null ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 global $messages_template;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $messages_template ) && (int) $thread_id > 0 ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -295,41 +303,64 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $thread_id = $messages_template->thread->thread_id;
</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">+                if ( null === $user_id ) {
+                       $user_id = bp_loggedin_user_id();
+               }
+
+               $domain = bp_core_get_user_domain( $user_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Filters the permalink of a particular thread.
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @since 1.0.0
</span><span class="cx" style="display: block; padding: 0 10px">                 * @since 2.6.0 Added the `$thread_id` parameter.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 * @since 2.9.0 Added the `$user_id` parameter.
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param string $value     Permalink of a particular thread.
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param int    $thread_id ID of the thread.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 * @param int    $user_id   ID of the user.
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/view/' . $thread_id ), $thread_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( $domain . bp_get_messages_slug() . '/view/' . $thread_id ), $thread_id, $user_id );
</ins><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><span class="cx" style="display: block; padding: 0 10px">  * Output the URL for deleting the current thread.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ *
+ * @since 2.9.0 Introduced `$user_id` parameter.
+ *
+ * @param int $user_id Optional. ID of the user relative to whom the link
+ *                     should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function bp_message_thread_delete_link() {
-       echo esc_url( bp_get_message_thread_delete_link() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function bp_message_thread_delete_link( $user_id = null ) {
+       echo esc_url( bp_get_message_thread_delete_link( $user_id ) );
</ins><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">         * Generate the URL for deleting the current thread.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 2.9.0 Introduced `$user_id` parameter.
+        *
+        * @param int $user_id Optional. ID of the user relative to whom the link
+        *                     should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function bp_get_message_thread_delete_link() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ function bp_get_message_thread_delete_link( $user_id = null ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 global $messages_template;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( null === $user_id ) {
+                       $user_id = bp_loggedin_user_id();
+               }
+
+               $domain = bp_core_get_user_domain( $user_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Filters the URL for deleting the current thread.
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @since 1.0.0
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * @param string $value URL for deleting the current thread.
-                * @param string $value Text indicating action being executed.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $value   URL for deleting the current thread.
+                * @param int    $user_id ID of the user relative to whom the link should be generated.
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/delete/' . $messages_template->thread->thread_id ), 'messages_delete_thread' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( trailingslashit( $domain . bp_get_messages_slug() . '/' . bp_current_action() . '/delete/' . $messages_template->thread->thread_id ), 'messages_delete_thread' ), $user_id );
</ins><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><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -338,18 +369,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Since this function directly outputs a URL, it is escaped.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 2.2.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 2.9.0 Introduced `$user_id` parameter.
+ *
+ * @param int $user_id Optional. ID of the user relative to whom the link
+ *                     should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function bp_the_message_thread_mark_unread_url() {
-       echo esc_url( bp_get_the_message_thread_mark_unread_url() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function bp_the_message_thread_mark_unread_url( $user_id = null ) {
+       echo esc_url( bp_get_the_message_thread_mark_unread_url( $user_id ) );
</ins><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">         * Return the URL used for marking a single message thread as unread.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 2.2.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 2.9.0 Introduced `$user_id` parameter.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param int $user_id Optional. ID of the user relative to whom the link
+        *                     should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function bp_get_the_message_thread_mark_unread_url() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ function bp_get_the_message_thread_mark_unread_url( $user_id = null ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Get the message ID.
</span><span class="cx" style="display: block; padding: 0 10px">                $id = bp_get_message_thread_id();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -360,8 +398,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'message_id' => $id
</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">+                if ( null === $user_id ) {
+                       $user_id = bp_loggedin_user_id();
+               }
+
+               $domain = bp_core_get_user_domain( $user_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Base unread URL.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $url = trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/unread' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $url = trailingslashit( $domain . bp_get_messages_slug() . '/' . bp_current_action() . '/unread' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Add the args to the URL.
</span><span class="cx" style="display: block; padding: 0 10px">                $url = add_query_arg( $args, $url );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -373,10 +417,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * Filters the URL used for marking a single message thread as unread.
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @since 2.2.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 * @since 2.9.0 Added `$user_id` parameter.
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * @param string $url URL used for marking a single message thread as unread.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $url     URL used for marking a single message thread as unread.
+                * @param int    $user_id ID of the user relative to whom the link should be generated.
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return apply_filters( 'bp_get_the_message_thread_mark_unread_url', $url );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return apply_filters( 'bp_get_the_message_thread_mark_unread_url', $url, $user_id );
</ins><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><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -385,18 +431,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Since this function directly outputs a URL, it is escaped.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 2.2.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 2.9.0 Introduced `$user_id` parameter.
+ *
+ * @param int $user_id Optional. ID of the user relative to whom the link
+ *                     should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function bp_the_message_thread_mark_read_url() {
-       echo esc_url( bp_get_the_message_thread_mark_read_url() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function bp_the_message_thread_mark_read_url( $user_id = null ) {
+       echo esc_url( bp_get_the_message_thread_mark_read_url( $user_id ) );
</ins><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">         * Return the URL used for marking a single message thread as read.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 2.2.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 2.9.0 Introduced `$user_id` parameter.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param int $user_id Optional. ID of the user relative to whom the link
+        *                     should be generated. Default: ID of logged-in user.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function bp_get_the_message_thread_mark_read_url() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ function bp_get_the_message_thread_mark_read_url( $user_id = null ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Get the message ID.
</span><span class="cx" style="display: block; padding: 0 10px">                $id = bp_get_message_thread_id();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -407,8 +460,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'message_id' => $id
</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">+                if ( null === $user_id ) {
+                       $user_id = bp_loggedin_user_id();
+               }
+
+               $domain = bp_core_get_user_domain( $user_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Base read URL.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $url = trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/read' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $url = trailingslashit( $domain . bp_get_messages_slug() . '/' . bp_current_action() . '/read' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Add the args to the URL.
</span><span class="cx" style="display: block; padding: 0 10px">                $url = add_query_arg( $args, $url );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -421,7 +480,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @since 2.2.0
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * @param string $url URL used for marking a single message thread as read.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $url     URL used for marking a single message thread as read.
+                * @param int    $user_id ID of the user relative to whom the link should be generated.
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><span class="cx" style="display: block; padding: 0 10px">                return apply_filters( 'bp_get_the_message_thread_mark_read_url', $url );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="trunksrcbptemplatesbplegacybuddypressmemberssinglemessagesmessagesloopphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php     2017-07-13 19:10:44 UTC (rev 11643)
+++ trunk/src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php       2017-07-13 19:11:00 UTC (rev 11644)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -115,7 +115,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                <td class="thread-info">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <p><a href="<?php bp_message_thread_view_link(); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( "View Message", 'buddypress' ); ?>" aria-label="<?php esc_attr_e( "View Message", 'buddypress' ); ?>"><?php bp_message_thread_subject(); ?></a></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <p><a href="<?php bp_message_thread_view_link( bp_get_message_thread_id(), bp_displayed_user_id() ); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( "View Message", 'buddypress' ); ?>" aria-label="<?php esc_attr_e( "View Message", 'buddypress' ); ?>"><?php bp_message_thread_subject(); ?></a></p>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <p class="thread-excerpt"><?php bp_message_thread_excerpt(); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px">                                                </td>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -139,12 +139,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                <td class="thread-options">
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php if ( bp_message_thread_has_unread() ) : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <a class="read" href="<?php bp_the_message_thread_mark_read_url();?>"><?php _e( 'Read', 'buddypress' ); ?></a>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <a class="read" href="<?php bp_the_message_thread_mark_read_url( bp_displayed_user_id() );?>"><?php _e( 'Read', 'buddypress' ); ?></a>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <?php else : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <a class="unread" href="<?php bp_the_message_thread_mark_unread_url();?>"><?php _e( 'Unread', 'buddypress' ); ?></a>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <a class="unread" href="<?php bp_the_message_thread_mark_unread_url( bp_displayed_user_id() );?>"><?php _e( 'Unread', 'buddypress' ); ?></a>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                         |
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <a class="delete" href="<?php bp_message_thread_delete_link(); ?>"><?php _e( 'Delete', 'buddypress' ); ?></a>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <a class="delete" href="<?php bp_message_thread_delete_link( bp_displayed_user_id() ); ?>"><?php _e( 'Delete', 'buddypress' ); ?></a>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>