<!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][9960] trunk: Introduce 'title' argument for `bp_get_blog_avatar()`.</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/9960">9960</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/9960","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>2015-06-22 14:14:25 +0000 (Mon, 22 Jun 2015)</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'>Introduce 'title' argument for `bp_get_blog_avatar()`.

This changeset also changes the default value of the 'title' attribute of blog
avatars to the display name of the site admin. The previous value was the site
admin's email address, which could introduce privacy concerns.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpblogsbpblogstemplatephp">trunk/src/bp-blogs/bp-blogs-template.php</a></li>
<li><a href="#trunktestsphpunittestcasesblogstemplatephp">trunk/tests/phpunit/testcases/blogs/template.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpblogsbpblogstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-blogs/bp-blogs-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-blogs/bp-blogs-template.php  2015-06-22 14:02:40 UTC (rev 9959)
+++ trunk/src/bp-blogs/bp-blogs-template.php    2015-06-22 14:14:25 UTC (rev 9960)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -523,6 +523,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * At the moment, blog avatars are simply the user avatars of the blog
</span><span class="cx" style="display: block; padding: 0 10px">         * admin. Filter 'bp_get_blog_avatar_' . $blog_id to customize.
</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 BuddyPress (2.4.0) Introduced `$title` argument.
+        *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @see bp_core_fetch_avatar() For a description of arguments and
</span><span class="cx" style="display: block; padding: 0 10px">         *      return values.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -532,6 +534,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *     {@link bp_core_fetch_avatar()}.
</span><span class="cx" style="display: block; padding: 0 10px">         *     @type string   $alt     Default: 'Profile picture of site author [user name]'.
</span><span class="cx" style="display: block; padding: 0 10px">         *     @type string   $class   Default: 'avatar'.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         *     @type string   $title   Default: 'Profile picture of site author [user name]'.
</ins><span class="cx" style="display: block; padding: 0 10px">          *     @type string   $type    Default: 'full'.
</span><span class="cx" style="display: block; padding: 0 10px">         *     @type int|bool $width   Default: false.
</span><span class="cx" style="display: block; padding: 0 10px">         *     @type int|bool $height  Default: false.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -549,21 +552,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return false;
</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">+                $author_displayname = bp_core_get_user_displayname( $blogs_template->blog->admin_user_id );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Parse the arguments
</span><span class="cx" style="display: block; padding: 0 10px">                $r = bp_parse_args( $args, array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'type'    => 'full',
</span><span class="cx" style="display: block; padding: 0 10px">                        'width'   => false,
</span><span class="cx" style="display: block; padding: 0 10px">                        'height'  => false,
</span><span class="cx" style="display: block; padding: 0 10px">                        'class'   => 'avatar',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'title'   => sprintf( __( 'Profile picture of site author %s', 'buddypress' ), esc_attr( $author_displayname ) ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'id'      => false,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'alt'     => sprintf( __( 'Profile picture of site author %s', 'buddypress' ), bp_core_get_user_displayname( $blogs_template->blog->admin_user_id ) ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'alt'     => sprintf( __( 'Profile picture of site author %s', 'buddypress' ), esc_attr( $author_displayname ) ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'no_grav' => true,
</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">                // Fetch the avatar
</span><span class="cx" style="display: block; padding: 0 10px">                $avatar = bp_core_fetch_avatar( array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'item_id'    => $blogs_template->blog->admin_user_id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'title'      => $blogs_template->blog->admin_user_email,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'title'      => $r['title'],
</ins><span class="cx" style="display: block; padding: 0 10px">                         //'avatar_dir' => 'blog-avatars',
</span><span class="cx" style="display: block; padding: 0 10px">                        //'object'     => 'blog',
</span><span class="cx" style="display: block; padding: 0 10px">                        'type'       => $r['type'],
</span></span></pre></div>
<a id="trunktestsphpunittestcasesblogstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/testcases/blogs/template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/testcases/blogs/template.php  2015-06-22 14:02:40 UTC (rev 9959)
+++ trunk/tests/phpunit/testcases/blogs/template.php    2015-06-22 14:14:25 UTC (rev 9960)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -366,4 +366,64 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $_REQUEST = $request;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       /**
+        * @ticket BP6519
+        */
+       public function test_bp_blog_get_avatar_should_respect_title_parameter() {
+               global $blogs_template;
+
+               if ( isset( $blogs_template ) ) {
+                       $_blogs_template = $blogs_template;
+               }
+
+               $user = $this->factory->user->create_and_get();
+
+               $blogs_template = new stdClass;
+               $blogs_template->blog = new stdClass;
+               $blogs_template->blog->blog_id = get_current_blog_id();
+               $blogs_template->blog->admin_user_id = $user->ID;
+               $blogs_template->blog->admin_user_email = $user->user_email;
+
+               $actual = bp_get_blog_avatar( array(
+                       'title' => 'Foo',
+               ) );
+
+               if ( isset( $_blogs_template ) ) {
+                       $blogs_template = $_blogs_template;
+               } else {
+                       unset( $blogs_template );
+               }
+
+               $this->assertContains( 'title="Foo"', $actual );
+       }
+
+       /**
+        * @ticket BP6519
+        */
+       public function test_bp_blog_get_avatar_title_attribute_should_default_to_user_displayname() {
+               global $blogs_template;
+
+               if ( isset( $blogs_template ) ) {
+                       $_blogs_template = $blogs_template;
+               }
+
+               $user = $this->factory->user->create_and_get();
+
+               $blogs_template = new stdClass;
+               $blogs_template->blog = new stdClass;
+               $blogs_template->blog->blog_id = get_current_blog_id();
+               $blogs_template->blog->admin_user_id = $user->ID;
+               $blogs_template->blog->admin_user_email = $user->user_email;
+
+               $actual = bp_get_blog_avatar();
+
+               if ( isset( $_blogs_template ) ) {
+                       $blogs_template = $_blogs_template;
+               } else {
+                       unset( $blogs_template );
+               }
+
+               $this->assertContains( 'title="Profile picture of site author ' . bp_core_get_user_displayname( $user->ID ) . '"', $actual );
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre>
</div>
</div>

</body>
</html>