Index: src/bp-activity/bp-activity-classes.php
===================================================================
--- src/bp-activity/bp-activity-classes.php
+++ src/bp-activity/bp-activity-classes.php
@@ -354,7 +354,7 @@
 
 			// override some arguments if needed
 			if ( ! empty( $scope_query['override'] ) ) {
-				$r = array_replace_recursive( $r, $scope_query['override'] );
+				$r = self::array_replace_recursive( $r, $scope_query['override'] );
 			}
 		// Advanced filtering
 		} elseif ( ! empty( $r['filter_query'] ) ) {
@@ -1666,6 +1666,59 @@
 
 		return $wpdb->get_var( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET hide_sitewide = 1 WHERE user_id = %d", $user_id ) );
 	}
+
+	/**
+	 * PHP-agnostic version of {@link array_replace_recursive()}.
+	 *
+	 * array_replace_recursive() is a PHP 5.3 function.  BuddyPress (and
+	 * WordPress) currently supports down to PHP 5.2, so this method is a workaround
+	 * for PHP 5.2.
+	 *
+	 * Note: array_replace_recursive() supports infinite arguments, but for our use-
+	 * case, we only need to support two arguments.
+	 *
+	 * Subject to removal once WordPress makes PHP 5.3.0 the minimum requirement.
+	 *
+	 * @since BuddyPress (2.2.0)
+	 *
+	 * @see http://php.net/manual/en/function.array-replace-recursive.php#109390
+	 *
+	 * @param  array $base         Array with keys needing to be replaced
+	 * @param  array $replacements Array with the replaced keys
+	 * @return array
+	 */
+	protected static function array_replace_recursive( $base = array(), $replacements = array() ) {
+		if ( function_exists( 'array_replace_recursive' ) ) {
+			return array_replace_recursive( $base, $replacements );
+		}
+
+		// PHP 5.2-compatible version
+		// http://php.net/manual/en/function.array-replace-recursive.php#109390
+		foreach ( array_slice( func_get_args(), 1 ) as $replacements ) {
+			$bref_stack = array( &$base );
+			$head_stack = array( $replacements );
+
+			do {
+				end( $bref_stack );
+
+				$bref = &$bref_stack[ key( $bref_stack ) ];
+				$head = array_pop( $head_stack );
+
+				unset( $bref_stack[ key($bref_stack) ] );
+
+				foreach ( array_keys( $head ) as $key ) {
+					if ( isset( $key, $bref ) && is_array( $bref[$key] ) && is_array( $head[$key] ) ) {
+						$bref_stack[] = &$bref[ $key ];
+						$head_stack[] = $head[ $key ];
+					} else {
+						$bref[ $key ] = $head[ $key ];
+					}
+				}
+			} while( count( $head_stack ) );
+		}
+
+		return $base;
+	}
 }
 
 /**
