<!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][8132] trunk: In update_meta() functions, return integer value if a new metadata is created</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">
<dt>Revision</dt> <dd><a href="http://buddypress.trac.wordpress.org/changeset/8132">8132</a></dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2014-03-14 00:50:26 +0000 (Fri, 14 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>In update_meta() functions, return integer value if a new metadata is created

Previously, BP update_meta() functions returned true on a successful update
*or* on the successful creation of new metadata. This is not consistent with
WP's update_metadata(), which on the creation of new metadata acts as a wrapper
for add_metadata(), which in turn returns an integer (the ID of the newly
created database row).

This changeset aligns BP's behavior with WP's.

We don't have any tests that directly address the data type returned by these
functions, but we do have a number of assertTrue assertions to verify the
setup of various tests. Where appropriate, these have been changed to the more
generous assertNotEmpty.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpactivitybpactivityfunctionsphp">trunk/bp-activity/bp-activity-functions.php</a></li>
<li><a href="#trunkbpblogsbpblogsfunctionsphp">trunk/bp-blogs/bp-blogs-functions.php</a></li>
<li><a href="#trunkbpgroupsbpgroupsfunctionsphp">trunk/bp-groups/bp-groups-functions.php</a></li>
<li><a href="#trunkbpxprofilebpxprofilefunctionsphp">trunk/bp-xprofile/bp-xprofile-functions.php</a></li>
<li><a href="#trunkteststestcasesactivityfunctionsphp">trunk/tests/testcases/activity/functions.php</a></li>
<li><a href="#trunkteststestcasesblogsfunctionsphp">trunk/tests/testcases/blogs/functions.php</a></li>
<li><a href="#trunkteststestcasesgroupsfunctionsphp">trunk/tests/testcases/groups/functions.php</a></li>
<li><a href="#trunkteststestcasesxprofilefunctionsphp">trunk/tests/testcases/xprofile/functions.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpactivitybpactivityfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-activity/bp-activity-functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-activity/bp-activity-functions.php      2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/bp-activity/bp-activity-functions.php 2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -661,7 +661,9 @@
</span><span class="cx">  * @param mixed $prev_value Optional. If specified, only update existing
</span><span class="cx">  *        metadata entries with the specified value. Otherwise, update all
</span><span class="cx">  *        entries.
</span><del>- * @return bool True on success, false on failure.
</del><ins>+ * @return bool|int Returns false on failure. On successful update of existing
+ *         metadata, returns true. On successful creation of new metadata,
+ *         returns the integer ID of the new metadata row.
</ins><span class="cx">  */
</span><span class="cx"> function bp_activity_update_meta( $activity_id, $meta_key, $meta_value, $prev_value = '' ) {
</span><span class="cx"> 
</span><span class="lines">@@ -674,11 +676,6 @@
</span><span class="cx">  $retval = update_metadata( 'activity', $activity_id, $meta_key, $meta_value, $prev_value );
</span><span class="cx">  remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> 
</span><del>-       // Legacy - return true if we fall through to add_metadata()
-       if ( is_int( $retval ) ) {
-               $retval = true;
-       }
-
</del><span class="cx">   return $retval;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpblogsbpblogsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-functions.php    2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/bp-blogs/bp-blogs-functions.php       2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -920,7 +920,9 @@
</span><span class="cx">  * @param mixed $prev_value Optional. If specified, only update existing
</span><span class="cx">  *        metadata entries with the specified value. Otherwise, update all
</span><span class="cx">  *        entries.
</span><del>- * @return bool True on success, false on failure.
</del><ins>+ * @return bool|int Returns false on failure. On successful update of existing
+ *         metadata, returns true. On successful creation of new metadata,
+ *         returns the integer ID of the new metadata row.
</ins><span class="cx">  */
</span><span class="cx"> function bp_blogs_update_blogmeta( $blog_id, $meta_key, $meta_value, $prev_value = '' ) {
</span><span class="cx"> 
</span><span class="lines">@@ -928,12 +930,6 @@
</span><span class="cx">  $retval = update_metadata( 'blog', $blog_id, $meta_key, $meta_value, $prev_value );
</span><span class="cx">  remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> 
</span><del>-       // Legacy - New items fall through to add_metadata(). Return true
-       // instead of the ID returned from that function.
-       if ( is_int( $retval ) ) {
-               $retval = true;
-       }
-
</del><span class="cx">   return $retval;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpgroupsbpgroupsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-groups/bp-groups-functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-groups/bp-groups-functions.php  2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/bp-groups/bp-groups-functions.php     2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -1095,7 +1095,9 @@
</span><span class="cx">  * @param mixed $prev_value Optional. If specified, only update existing
</span><span class="cx">  *        metadata entries with the specified value. Otherwise, update all
</span><span class="cx">  *        entries.
</span><del>- * @return bool True on success, false on failure.
</del><ins>+ * @return bool|int Returns false on failure. On successful update of existing
+ *         metadata, returns true. On successful creation of new metadata,
+ *         returns the integer ID of the new metadata row.
</ins><span class="cx">  */
</span><span class="cx"> function groups_update_groupmeta( $group_id, $meta_key, $meta_value, $prev_value = '' ) {
</span><span class="cx"> 
</span><span class="lines">@@ -1103,11 +1105,6 @@
</span><span class="cx">  $retval = update_metadata( 'group', $group_id, $meta_key, $meta_value, $prev_value );
</span><span class="cx">  remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> 
</span><del>-       // Legacy - return true if we fall through to add_metadata()
-       if ( is_int( $retval ) ) {
-               $retval = true;
-       }
-
</del><span class="cx">   return $retval;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbpxprofilebpxprofilefunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-xprofile/bp-xprofile-functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-xprofile/bp-xprofile-functions.php      2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/bp-xprofile/bp-xprofile-functions.php 2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -664,7 +664,9 @@
</span><span class="cx">  * @param mixed $prev_value Optional. If specified, only update existing
</span><span class="cx">  *        metadata entries with the specified value. Otherwise, update all
</span><span class="cx">  *        entries.
</span><del>- * @return bool True on success, false on failure.
</del><ins>+ * @return bool|int Returns false on failure. On successful update of existing
+ *         metadata, returns true. On successful creation of new metadata,
+ *         returns the integer ID of the new metadata row.
</ins><span class="cx">  */
</span><span class="cx"> function bp_xprofile_update_meta( $object_id, $object_type, $meta_key, $meta_value, $prev_value = '' ) {
</span><span class="cx"> 
</span><span class="lines">@@ -674,12 +676,6 @@
</span><span class="cx">  remove_filter( 'query', 'bp_xprofile_filter_meta_query' );
</span><span class="cx">  remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> 
</span><del>-       // Legacy - if we fall through to add_metadata(), return true rather
-       // than the integer meta_id
-       if ( is_int( $retval ) ) {
-               $retval = (bool) $retval;
-       }
-
</del><span class="cx">   return $retval;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkteststestcasesactivityfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/tests/testcases/activity/functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/activity/functions.php     2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/tests/testcases/activity/functions.php        2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx">  public function test_bp_activity_update_meta_new() {
</span><span class="cx">          $a = $this->factory->activity->create();
</span><span class="cx">          $this->assertSame( '', bp_activity_get_meta( $a, 'foo' ), '"foo" meta should be empty for this activity item.' );
</span><del>-               $this->assertTrue( bp_activity_update_meta( $a, 'foo', 'bar' ) );
</del><ins>+                $this->assertNotEmpty( bp_activity_update_meta( $a, 'foo', 'bar' ) );
</ins><span class="cx">           $this->assertSame( 'bar', bp_activity_get_meta( $a, 'foo' ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkteststestcasesblogsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/tests/testcases/blogs/functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/blogs/functions.php        2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/tests/testcases/blogs/functions.php   2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -18,7 +18,7 @@
</span><span class="cx">   * @ticket BP5399
</span><span class="cx">   */
</span><span class="cx">  public function test_bp_blogs_delete_blogmeta_illegal_characters() {
</span><del>-               $this->assertTrue( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</del><ins>+                $this->assertNotEmpty( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</ins><span class="cx">           $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</span><span class="cx">          $krazy_key = ' f!@#$%^o *(){}o?+';
</span><span class="cx">          $this->assertFalse( bp_blogs_delete_blogmeta( 1, $krazy_key ) );
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx">   * @ticket BP5399
</span><span class="cx">   */
</span><span class="cx">  public function test_bp_blogs_delete_blogmeta_trim_meta_value() {
</span><del>-               $this->assertTrue( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</del><ins>+                $this->assertNotEmpty( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</ins><span class="cx">           $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</span><span class="cx">          bp_blogs_delete_blogmeta( 1, 'foo', '   bar  ' );
</span><span class="cx">          $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx">   * @group bp_blogs_update_blogmeta
</span><span class="cx">   */
</span><span class="cx">  public function test_bp_blogs_update_blogmeta_new() {
</span><del>-               $this->assertTrue( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</del><ins>+                $this->assertNotEmpty( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</ins><span class="cx">           $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkteststestcasesgroupsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/tests/testcases/groups/functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/groups/functions.php       2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/tests/testcases/groups/functions.php  2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -308,7 +308,7 @@
</span><span class="cx">  public function test_groups_update_groupmeta_new() {
</span><span class="cx">          $g = $this->factory->group->create();
</span><span class="cx">          $this->assertSame( '', groups_get_groupmeta( $g, 'foo' ), '"foo" meta should be empty for this group.' );
</span><del>-               $this->assertTrue( groups_update_groupmeta( $g, 'foo', 'bar' ) );
</del><ins>+                $this->assertNotEmpty( groups_update_groupmeta( $g, 'foo', 'bar' ) );
</ins><span class="cx">           $this->assertSame( 'bar', groups_get_groupmeta( $g, 'foo' ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span><span class="lines">@@ -467,7 +467,7 @@
</span><span class="cx">   */
</span><span class="cx">  public function test_groups_delete_groupmeta_with_illegal_key_characters() {
</span><span class="cx">          $g = $this->factory->group->create();
</span><del>-               $this->assertTrue( groups_update_groupmeta( $g, 'foo', 'bar' ), 'Value of "foo" should be set at this point.' );
</del><ins>+                $this->assertNotEmpty( groups_update_groupmeta( $g, 'foo', 'bar' ), 'Value of "foo" should be set at this point.' );
</ins><span class="cx"> 
</span><span class="cx">          $krazy_key = ' f!@#$%^o *(){}o?+';
</span><span class="cx">          $this->assertSame( 'bar', groups_get_groupmeta( $g, 'foo' ) );
</span></span></pre></div>
<a id="trunkteststestcasesxprofilefunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/tests/testcases/xprofile/functions.php (8131 => 8132)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/xprofile/functions.php     2014-03-14 00:37:28 UTC (rev 8131)
+++ trunk/tests/testcases/xprofile/functions.php        2014-03-14 00:50:26 UTC (rev 8132)
</span><span class="lines">@@ -417,7 +417,7 @@
</span><span class="cx">  public function test_bp_xprofile_update_meta_new() {
</span><span class="cx">          $g = $this->factory->xprofile_group->create();
</span><span class="cx">          $this->assertSame( '', bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</span><del>-               $this->assertTrue( bp_xprofile_update_meta( $g, 'group', 'foo', 'bar' ) );
</del><ins>+                $this->assertNotEmpty( bp_xprofile_update_meta( $g, 'group', 'foo', 'bar' ) );
</ins><span class="cx">           $this->assertSame( 'bar', bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</span><span class="cx">  }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>