<!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][8129] trunk: Don't improperly sanitize meta_key in _meta() 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">
<dt>Revision</dt> <dd><a href="http://buddypress.trac.wordpress.org/changeset/8129">8129</a></dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2014-03-14 00:07:18 +0000 (Fri, 14 Mar 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Don't improperly sanitize meta_key in _meta() functions
Many BP meta functions have always stripped certain characters from the
$meta_key parameter before performing their operations. This is a terrible idea
on a number of levels: it doesn't provide any feedback to the user, it silently
performs actions that are not equivalent to the ones intended by the user, and
it doesn't serve any real purpose (since any necessary sanitization happens at
the level of $wpdb). Moreover, it wasn't even applied consistently across all
functions. A truly delightful grab bag.
This changeset removes the sanitization, and updates the necessary unit tests
to reflect the change.
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 (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-activity/bp-activity-functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/bp-activity/bp-activity-functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -576,9 +576,6 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // Legacy - Sanitize key
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> // Legacy - Trim off whitespace
</span><span class="cx"> $meta_value = trim( $meta_value );
</span><span class="cx">
</span><span class="lines">@@ -627,9 +624,6 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // Legacy - Sanitize keys
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> add_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> $retval = get_metadata( 'activity', $activity_id, $meta_key, $single );
</span><span class="cx"> remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="lines">@@ -684,9 +678,6 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // Legacy - Sanitize key
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> add_filter( 'query', 'bp_filter_metaid_column_name' );
</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></pre></div>
<a id="trunkbpblogsbpblogsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-blogs/bp-blogs-functions.php (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-blogs/bp-blogs-functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/bp-blogs/bp-blogs-functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -853,9 +853,6 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // Legacy - sanitize meta_key
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> // Legacy - if no meta_key is passed, delete all for the blog_id
</span><span class="cx"> if ( empty( $meta_key ) ) {
</span><span class="cx"> $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->blogmeta} WHERE blog_id = %d", $blog_id ) );
</span><span class="lines">@@ -897,9 +894,6 @@
</span><span class="cx"> */
</span><span class="cx"> function bp_blogs_get_blogmeta( $blog_id, $meta_key = '', $single = true ) {
</span><span class="cx">
</span><del>- // Legacy - Sanitize meta_key
- $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
-
</del><span class="cx"> add_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> $retval = get_metadata( 'blog', $blog_id, $meta_key, $single );
</span><span class="cx"> remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="lines">@@ -933,9 +927,6 @@
</span><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><del>- // Legacy - Sanitize meta_key
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> add_filter( 'query', 'bp_filter_metaid_column_name' );
</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></pre></div>
<a id="trunkbpgroupsbpgroupsfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-groups/bp-groups-functions.php (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-groups/bp-groups-functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/bp-groups/bp-groups-functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -1037,9 +1037,6 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // Legacy - Sanitize keys
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> // Legacy - if no meta_key is passed, delete all for the item
</span><span class="cx"> if ( empty( $meta_key ) ) {
</span><span class="cx"> $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->groupmeta} WHERE group_id = %d", $group_id ) );
</span><span class="lines">@@ -1073,9 +1070,6 @@
</span><span class="cx"> */
</span><span class="cx"> function groups_get_groupmeta( $group_id, $meta_key = '', $single = true ) {
</span><span class="cx">
</span><del>- // Legacy - Sanitize keys
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> add_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> $retval = get_metadata( 'group', $group_id, $meta_key, $single );
</span><span class="cx"> remove_filter( 'query', 'bp_filter_metaid_column_name' );
</span></span></pre></div>
<a id="trunkbpxprofilebpxprofilefunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-xprofile/bp-xprofile-functions.php (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-xprofile/bp-xprofile-functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/bp-xprofile/bp-xprofile-functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -671,9 +671,6 @@
</span><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><del>- // Legacy - sanitize meta_key
- $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key );
-
</del><span class="cx"> add_filter( 'query', 'bp_filter_metaid_column_name' );
</span><span class="cx"> add_filter( 'query', 'bp_xprofile_filter_meta_query' );
</span><span class="cx"> $retval = update_metadata( 'xprofile_' . $object_type, $object_id, $meta_key, $meta_value, $prev_value );
</span></span></pre></div>
<a id="trunkteststestcasesactivityfunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/tests/testcases/activity/functions.php (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/activity/functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/tests/testcases/activity/functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -125,13 +125,14 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group activitymeta
</span><span class="cx"> * @group bp_activity_update_meta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_activity_update_meta_with_illegal_key_characters() {
</span><span class="cx"> $a = $this->factory->activity->create();
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><span class="cx"> bp_activity_update_meta( $a, $krazy_key, 'bar' );
</span><span class="cx">
</span><del>- $this->assertSame( 'bar', bp_activity_get_meta( $a, 'foo' ) );
</del><ins>+ $this->assertEmpty( bp_activity_get_meta( $a, 'foo' ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="lines">@@ -230,14 +231,14 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group activitymeta
</span><span class="cx"> * @group bp_activity_get_meta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_activity_get_meta_with_illegal_characters() {
</span><span class="cx"> $a = $this->factory->activity->create();
</span><span class="cx"> bp_activity_update_meta( $a, 'foo', 'bar' );
</span><span class="cx">
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><del>- $this->assertNotEmpty( bp_activity_get_meta( $a, 'foo' ) );
- $this->assertSame( bp_activity_get_meta( $a, 'foo' ), bp_activity_get_meta( $a, $krazy_key ) );
</del><ins>+ $this->assertEmpty( bp_activity_get_meta( $a, $krazy_key ) );
</ins><span class="cx"> }
</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 (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/blogs/functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/tests/testcases/blogs/functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -15,13 +15,14 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group blogmeta
</span><span class="cx"> * @group bp_blogs_delete_blogmeta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_blogs_delete_blogmeta_illegal_characters() {
</span><span class="cx"> $this->assertTrue( bp_blogs_update_blogmeta( 1, 'foo', 'bar' ) );
</span><span class="cx"> $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><del>- $this->assertTrue( bp_blogs_delete_blogmeta( 1, $krazy_key ) );
- $this->assertSame( '', bp_blogs_get_blogmeta( 1, 'foo' ) );
</del><ins>+ $this->assertFalse( bp_blogs_delete_blogmeta( 1, $krazy_key ) );
+ $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="lines">@@ -109,11 +110,12 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group blogmeta
</span><span class="cx"> * @group bp_blogs_get_blogmeta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_blogs_get_blogmeta_illegal_characters() {
</span><span class="cx"> bp_blogs_update_blogmeta( 1, 'foo', 'bar' );
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><del>- $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, $krazy_key ) );
</del><ins>+ $this->assertEmpty( bp_blogs_get_blogmeta( 1, $krazy_key ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="lines">@@ -166,11 +168,12 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group blogmeta
</span><span class="cx"> * @group bp_blogs_update_blogmeta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_blogs_update_blogmeta_illegal_characters() {
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><span class="cx"> bp_blogs_update_blogmeta( 1, $krazy_key, 'bar' );
</span><del>- $this->assertSame( 'bar', bp_blogs_get_blogmeta( 1, 'foo' ) );
</del><ins>+ $this->assertEmpty( bp_blogs_get_blogmeta( 1, 'foo' ) );
</ins><span class="cx"> }
</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 (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/groups/functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/tests/testcases/groups/functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -356,15 +356,15 @@
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="cx"> * @group groupmeta
</span><del>- *
- * @todo Why do we do this?
</del><ins>+ * @group groups_get_groupmeta
+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_groups_get_groupmeta_with_illegal_key_characters() {
</span><span class="cx"> $g = $this->factory->group->create();
</span><span class="cx"> groups_update_groupmeta( $g, 'foo', 'bar' );
</span><span class="cx">
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><del>- $this->assertSame( groups_get_groupmeta( $g, 'foo' ), groups_get_groupmeta( $g, $krazy_key ) );
</del><ins>+ $this->assertEmpty( groups_get_groupmeta( $g, $krazy_key ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="lines">@@ -462,14 +462,15 @@
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="cx"> * @group groupmeta
</span><ins>+ * @group groups_delete_groupmeta
+ * @ticket BP5399
</ins><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><span class="cx"> $this->assertTrue( groups_update_groupmeta( $g, 'foo', 'bar' ), 'Value of "foo" should be set at this point.' );
</span><span class="cx">
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><del>- $this->assertTrue( groups_delete_groupmeta( $g, $krazy_key ) );
- $this->assertSame( '', groups_get_groupmeta( $g, 'foo' ) );
</del><ins>+ $this->assertSame( 'bar', groups_get_groupmeta( $g, 'foo' ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span></span></pre></div>
<a id="trunkteststestcasesxprofilefunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/tests/testcases/xprofile/functions.php (8128 => 8129)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/tests/testcases/xprofile/functions.php 2014-03-13 19:44:55 UTC (rev 8128)
+++ trunk/tests/testcases/xprofile/functions.php 2014-03-14 00:07:18 UTC (rev 8129)
</span><span class="lines">@@ -185,6 +185,7 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group xprofilemeta
</span><span class="cx"> * @group bp_xprofile_delete_meta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_xprofile_delete_meta_illegal_characters() {
</span><span class="cx"> $g = $this->factory->xprofile_group->create();
</span><span class="lines">@@ -192,8 +193,8 @@
</span><span class="cx"> $this->assertSame( 'bar', bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</span><span class="cx">
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><del>- $this->assertTrue( bp_xprofile_delete_meta( $g, 'group', 'foo' ) );
- $this->assertEquals( '', bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</del><ins>+ bp_xprofile_delete_meta( $g, 'group', $krazy_key );
+ $this->assertSame( 'bar', bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="lines">@@ -377,12 +378,13 @@
</span><span class="cx"> /**
</span><span class="cx"> * @group xprofilemeta
</span><span class="cx"> * @group bp_xprofile_update_meta
</span><ins>+ * @ticket BP5399
</ins><span class="cx"> */
</span><span class="cx"> public function test_bp_xprofile_update_meta_illegal_characters() {
</span><span class="cx"> $g = $this->factory->xprofile_group->create();
</span><span class="cx"> $krazy_key = ' f!@#$%^o *(){}o?+';
</span><span class="cx"> bp_xprofile_update_meta( $g, 'group', $krazy_key, 'bar' );
</span><del>- $this->assertSame( 'bar', bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</del><ins>+ $this->assertEmpty( bp_xprofile_get_meta( $g, 'group', 'foo' ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span></span></pre>
</div>
</div>
</body>
</html>