<!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][10725] trunk/src/bp-notifications: Notifications: Introduce two new parameters to the `'bp_notifications_get_notifications_for_user'` filter.</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/10725">10725</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/10725","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>r-a-y</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2016-04-27 19:18:01 +0000 (Wed, 27 Apr 2016)</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'>Notifications: Introduce two new parameters to the `'bp_notifications_get_notifications_for_user'` filter.

This commit:
* Adds `$component_action_name` and `$component_name` as the 6th and 7th parameters to the filter.
* Updates the DocBlock for the filter.

In the DocBlock, we are deprecating the first parameter, which is the
component action name.  It is recommended to do notification action name
checks against the 6th parameter from now on.

The reason why we are deprecating the first parameter is due to potential
plugin conflicts. If a plugin is doing a specific check on the notification
action and changes the return value for the filter, then no other plugin
can do checks for that same notification action.  Also see <a href="http://buddypress.trac.wordpress.org/ticket/6669">#6669</a>.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpnotificationsbpnotificationsfunctionsphp">trunk/src/bp-notifications/bp-notifications-functions.php</a></li>
<li><a href="#trunksrcbpnotificationsbpnotificationstemplatephp">trunk/src/bp-notifications/bp-notifications-template.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpnotificationsbpnotificationsfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-notifications/bp-notifications-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-notifications/bp-notifications-functions.php 2016-04-27 17:05:42 UTC (rev 10724)
+++ trunk/src/bp-notifications/bp-notifications-functions.php   2016-04-27 19:18:01 UTC (rev 10725)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -270,18 +270,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $component_action_items[0]->item_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                        $component_action_items[0]->secondary_item_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                        $action_item_count,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $format
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $format,
+                                       $component_action_name, // Duplicated so plugins can check the canonical action name.
+                                       $component_name
</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">                                // Function should return an object.
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( 'object' === $format ) {
</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">-                                         * Filters the notifications for a user.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                  * Filters the notification content for notifications created by plugins.
</ins><span class="cx" style="display: block; padding: 0 10px">                                          *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         * If your plugin extends the {@link BP_Component} class, you should use the
+                                        * 'notification_callback' parameter in your extended
+                                        * {@link BP_Component::setup_globals()} method instead.
+                                        *
</ins><span class="cx" style="display: block; padding: 0 10px">                                          * @since 1.9.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         * @since 2.6.0 Added $component_action_name and $component_name as parameters.
</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 array $ref_array Array of properties for the current notification being rendered.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                  * @param string $content               Component action. Deprecated. Do not do checks against this! Use
+                                        *                                      the 6th parameter instead - $component_action_name.
+                                        * @param int    $item_id               Notification item ID.
+                                        * @param int    $secondary_item_id     Notification secondary item ID.
+                                        * @param int    $action_item_count     Number of notifications with the same action.
+                                        * @param string $format                Format of return. Either 'string' or 'object'.
+                                        * @param string $component_action_name Canonical notification action.
+                                        * @param string $component_name        Notification component ID.
+                                        *
+                                        * @return string|array If $format is 'string', return a string of the notification content.
+                                        *                      If $format is 'object', return an array formatted like:
+                                        *                      array( 'text' => 'CONTENT', 'link' => 'LINK' )
</ins><span class="cx" style="display: block; padding: 0 10px">                                          */
</span><span class="cx" style="display: block; padding: 0 10px">                                        $content = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcbpnotificationsbpnotificationstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-notifications/bp-notifications-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-notifications/bp-notifications-template.php  2016-04-27 17:05:42 UTC (rev 10724)
+++ trunk/src/bp-notifications/bp-notifications-template.php    2016-04-27 19:18:01 UTC (rev 10725)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -479,7 +479,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        /** This filter is documented in bp-notifications/bp-notifications-functions.php */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $description = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', array( $notification->component_action, $notification->item_id, $notification->secondary_item_id, 1 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $description = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', array( $notification->component_action, $notification->item_id, $notification->secondary_item_id, 1, 'string', $notification->component_action, $notification->component_name ) );
</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></pre>
</div>
</div>

</body>
</html>