Version 1.6
Version 1.6 is a major BuddyPress feature release. BuddyPress 1.6 introduces many dozens of new features and enhancements, on top of hundreds of bugfixes.
For Version 1.6, the database version (bp-db-version in wp_options) changed to 6066, and the Trac revision was 6231. Read the full ticket log here.
Highlights
- Activity Management
- Akismet Integration
- Database Query Reduction — On the directory pages, database queries were reduced by 25% – 50%.
- Improved SEO — Canonical redirects for improved search engine performance.
- Faster and More Efficient – We’ve gone over every centimetre of BuddyPress with a fine-toothed comb, and it’s the fastest, the most efficient, and the most user- and developer-friendly release so far.
- Toolbar — complete integration with the WordPress Toolbar.
- Profile Privacy — fine-grained visibility levels for profile fields.
User Features
Activity
- Add activity management screen into WordPress Administration area. (#3660)
- Add Akismet integration. (#3660)
- Activity is now checked for blacklisted words and flooding protection has been added. (#3732)
- Fix activity favouriting when javascript is disabled. (#3733)
- Fixed bug that may have caused notifications to be sent multiple times for the same activity item with an @-mention (#3825)
- @-mentions are now recognized in blog post content (#2380)
Administration
- Relocates the top-level BuddyPress admin menu to under the Settings and Users menus. Maintains compatibility with third-party plugins that add their admin menus under the old top-level BP menu. (#3708)
- Multisite fixes for the relocated admin menu. (#3785)
- Adds an option to Groups and Members widget that allows admins to link widget titles to the corresponding directories (#3862)
- Fixes “Create new blog” link in ms-blogs.php to point to the BP blog creation page (#3941)
- Beautiful new component icons!
Default Theme
- Fix long Group Forum topic titles overlapping with topic’s tags. (#3643)
- Fix custom header not appearing when a page’s featured image isn’t wide enough. (#3700)
- Fix deleting activity comments when javascript is disabled. (#3706)
- Fix the theme being made available before BuddyPress is fully installed. (#3724)
- Removed has-comments class from activity item when final activity comment is deleted, to help make spacing more uniform. (#3574)
- Users can now edit their own forum posts, even when they’re no longer part of the group in question. (#3640)
- Now the title attribute on the Favorite/Remove Favorite button swaps when clicked. (#3618)
- Improved menu performance on touch devices (#3701)
- Improved responsive styling (#3606)
- Returns a more correct count for the Members directory (#4061)
General
- BuddyPress now uses the WordPress Toolbar. The BuddyBar has been deprecated. (#3596, #3661)
- Fixed bug with post previews when front
Groups
- Add ability to change a group’s default tab. (#3669)
- Allow users to edit their own forum posts, even when they’re no longer part of the group in question. (#3640)
- Added WP cache support to groups_get_group() and switches internal instantiations of BP_Groups_Group out for calls to groups_get_group() where possible. (#3770)
- Do a proper topic count when viewing a forum tag archive. (#3761)
- Don’t show the Demote to Member button on group admin when the group only has one admin. (#3711)
- Added logic to prevent users from posting the same reply multiple times in a given topic, to prevent flooding and spam (#3556)
- Fixed bug that caused activity emails from being sent more than once for the same forum topic (#3936)
Messages
- Fixed a bug that caused duplicate recipients to show up in the To: list in some cases (#3938)
- Added an AJAX search to the Private Messages inbox and sentbox (#3993)
- Fixes pagination for Notices (#4204)
Profile Fields
- The Profile Fields menu in the WordPress Administration area has been moved to the main Users menu.
- Adds Visibility settings to profile fields, so that users can limit data visibility to Friends, Logged-In Users, or Anyone, on a field-by-field basis (#3695)
Site Management
- Add activity management screen to WordPress Administration area. (#3660)
- The BuddyPress menu in the WordPress Administration area has been moved to the main Settings menu. (#3708)
- The Profile Fields menu in the WordPress Administration area has been moved to the main Users menu.
- bp_has_custom_activation_page() is deprecated in favor of checking bp_pages for an activation page. bp_get_activation_page() has been retooled so that it returns the proper network registration page when adding users from a non-root Dashboard. (#2350)
Development, Themes, Plugins
Activity
- Activity meta is now cached at the start of an activity loop. (#3814)
- Fix query string being removed when redirecting a URL in the activity permalink router. (#3702)
- Sitewide Tags blog posts now won’t go to the activity stream (unless explicitly told to do so by filtering ‘bp_blogs_block_sitewide_tags_activity’). (#3742)
- Caption shortcodes in blog post activity items are now stripped. (#3697)
- Don’t allow divs in activity items by default. (#3576)
- When marking a user as a spammer, it now flags all of their activity items as spam instead of deleting them. (#3660)
- Improved l18n in Activity RSS feeds. (#3728)
- In the Activity admin, fix certain activity types showing incorrect “In Reply To” information.(#3708)
- When marking a user as not a spammer, mark all their activity as not spam, too.Also removes legacy behaviour of changing activities’ hide_sitewide when marking a user as a spammer. (#3660)
- Remove has-comments class from activity item when final activity comment is deleted, to help make spacing more uniform. (#3574)
- Strips caption shortcode in blog post activity items. (#3697)
- Improves l18n in Activity RSS feeds. (#3728)
- On the Activity admin screen, when filtered to show a specific activity (via speech bubble), display all its child activities on the same screen. (#3660)
- Removes 1.1-era ‘afilter’ arguments for activity queries, except when enabled by a filter (#3754)
- Adds pre-caching of activity metadata at the beginning of loops, for efficiency improvements on directories (#3814)
- Improved performance in activity queries, thanks to better typecasting to take advantage of indexes (#4045)
- Enables associative-array-style arguments to be passed to bp_has_activities() and related functions (#3797)
Administration
- bp_has_custom_activation_page() is deprecated in favor of checking bp_pages for an activation page. bp_get_activation_page() has been retooled so that it returns the proper network registration page when adding users from a non-root Dashboard. (#2350)
- Now uses blogs root slug (rather than slug) for the Create a Site button on the Sites Directory. (r5372)
- Activity admin improvements added:
- Updated use of old, incorrect bp_activity_get_specific() spam parameter to new name. Updated contextual help.
- Updated In Reply To column; now correctly shows details of that activity. Made speech bubble appearance consistent between root activities vs. non-root activities.
- Pluralised the name of top-level Activity menu to match other menus’ titles.
- Moved index/edit screen generation into separate functions; restructure bp_activity_admin().
- Changed the In Response To column to only show speech bubble when item is a root activity, rather than for any node that contains children. This changes the single activity filter screen to match BP-Default’s activity permalink screen.
- Fixed “n activities per screen” option not working (and only load on the index screen).
- Fixed activity type filter drop down.
- Fixed PHP warnings when the index screen tried to truncate activity item’s contents.
- Added “bp_activity_use_akismet” filter to allow Akismet integration with Activity to be disabled.
- Added first version of the Activity edit screen, and its contextual help text.
- Switched the “filter by” drop down on the Activity admin screen to get its values from the registered activity list. Added missing core activity types to that list.
(#3660, r5398, r5437)
- Switch maintenance_mode check to empty() so that it’s not thrown off by an empty string. (r5405)
- Fixed bulk actions on activity admin screen. (#3781)
- Removed duplicate updated messages in admin screens. (#3784)
- Settings refactored to use WP Settings API (#3835)
- Refactored mark-as-spam/ham functions so that BP spamming events are called in a more reliable way (#3787)
Blogs
- Ensures links are constructed with trailing slash in blogs and core component. (#3779)
Default Theme
- Add template_notices action to members/activity/permalink page. (r5255)
- Correct translator documentation and add new action to activity comment template’s meta section. (r5256)
- Removed duplicate group_id hidden field from groups/single/admin.php. (#3753)
- Rearranged groups/single/forum/topic.php template so that admin links and reply markup appears even when, because of a malfunction, there are no posts in the topic. (#3675)
- Reordered _header_action buttons, to make it easier for plugins to reorder them (#3749)
- Additional pre- and post-content action hooks in blog and group creation templates (#3737)
- Unbind jQuery selectors from elements, to make HTML5 child theming easier (#3821)
- Improved avatar/Gravatar performance over SSL
Friends
- Ensures that friends_update_friend_totals() is called manually when friends_add_friend() is used with force_accept = true. Fixes #3676
- Ensures links are constructed with trailing slash in forums and friends components. (#3779)
- Cleans up outdated URL params throughout the Friends component (#4077)
General
- Fix PHP Notices. (Many tickets/revisions, including #3686, #3739)
- Fix current-menu-item class not being applied to WordPress custom menu item state. (#3621)
- Add bp-core-moderation.php to provide basic functions for checking submitted content against illegal keys and flooding. (#3732)
- Fix deprecated function bp_is_member() not returning bp_is_user(). (#3734)
- Substantial work has been made to remove $bp global use throughout BuddyPress. New actions and functions have been introduced to achieve this. (Many tickets/revisions, including #3738, #3739, r5319)
- Preparatory work has been made in implementing custom roles, capabilities, and more use of the options APIs. (Many tickets/revisions, including #3738, #3739, #3740)
- Add BuddyPress class to bp-loader.php to handle the loading of BuddyPress core and provide declarations to the $bp global variables. Ports several functions and methods from bbPress 2.0 into bp-core-update.php to manage the hand-off into the update routine. (#3739, r5314, r5316, r5319)
- Add SEO improvements: make ambiguous item URIs to resolve to their most specific versions to avoid content duplication. (#1741)
- Whitespace cleanup in bp_core_get_root_options().
- Now passes automatically generated <title>’s through translation functions, so that they can be localized. (#3731)
- Now doesn’t set a current component when show_on_front is set to a BP component but a WP object is being requested via the ‘p’ URL parameter, as in Preview mode.(#3747)
- Use apply_filters() instead of apply_filters_ref_array() in bp_core_no_access(). (r5373)
- Replaced onfocus javascript in directory search boxes with HTML5 placeholder text. (#3730)
- Cleanup pass-by-reference and whitespace in bp-xprofile-classes.php. (#3723)
- When cross-referencing the bp_uri stack against paths in bp_core_set_uri_globals(), only remove matches that appear at the same index.(#1726)
- Remove deprecated reference to VHOST in bp_core_set_uri_globals(). (#3584)
- Fixes is_network_activate so it’s only tripped when upgrading to WP Network mode. (r5404)
- Use BP_PLUGIN_DIR and BP_PLUGIN_URL globals when setting up globals in BuddyPress::setup_globals(). (r5406)
- Use correct boolean when deciding whether to load deprecated functions.(r5348)
- Refactors URL canonicalization logic, moving it into the single bp_redirect_canonical() which is loaded from bp_core_load_template() instead of redirecting during the nav setup routine. See #1741. Combines all canonicalization into a single redirect. Fixes #3771. Ensures that query strings are preserved on redirects. (#3777)
- Moves bp_redirect_canonical to bp-core-catchuri.php with other URI-related functions. Readds error/success messages before redirect so that they’re not lost in a cookie black hole. (#3786)
- Remove BuddyPress’s custom username validation, in favor of WordPress’s (#2207)
- Improves argument swapping in email content, for better l11n (#3795)
- Pass concatenated values to bp_core_fetch_avatar() for ‘alt’ when possible, for performance improvements (#3806)
- Improved performance when accessing content via XML-RPC (#3873)
- Improved compatibility with WP Super Cache (#3841)
- Removed networkwide requirement for BP, allowing it to be activated on single sites in an MS install (#3982)
- Moves bp_actions and bp_screens actions to template_redirect, for better consistency with WordPress themes (#4029)
- Introduces bp-core-caps, allowing the proper use of WP capabilities (#4038)
- Template loops now can have their pagination query args renamed, for multiple loops per page. (#3679)
- Moves AJAX requests to admin-ajax.php instead of wp-load.php, for better compatibility with WordPress (#2599, #3985)
- Improves load order of language files (#4190)
- Improves bp_core_login_redirect(), for more intelligent and flexible redirects after login (#4199)
- Greater consistency with activation key generation (#4218)
- Introduces filters on global tables in the setup_globals() method
- Properly deprecated some functions removed in earlier versions (#4249)
Groups
- Group meta is now cached when viewing a group page. (#3799)
- Now gives a 404 when attempting to access the URL of a hidden group. (#34620)
- Introduced admin_slug, admin_name, create_slug, and create_name properties for BP_Group_Extension, to provide for more flexibility in the way that admin and group creation tabs are named in plugins. (#3206)
- Corrected the logic for protecting hidden vs private group access in bp-groups-loader.php. (r5393)
- Allow groups_update_groupmeta() to record an empty value, instead of invoking groups_delete_groupmeta().(#3139)
- Incorrect property name in bp_get_the_topic_forum_id() is fixed. (#3757)
- Ensures links are constructed with trailing slash in groups, members, and messages components. (#3779)
- Improved caching in groups_get_groupmeta (#3803)
- Improved efficiency on group directories, by passing literal ‘alt’ and ‘title’ parameters to bp_core_fetch_avatar() and doing more intelligent pre-caching of groupmeta values (#3804, #3799)
- Redirect non-group-admins away from group admin section with bp_core_no_access() rather than 404 (#3694)
- Improves default group extension logic, so that the Home tab remains available in all cases (#4072)
- Improves total group count performance when using a persistent cache (#4226)
Members
- Now provides a valid fallback redirect for situations where the default component is set to something that is unavailable for the logged-in user (such as messages, when viewing someone else’s profile). (#3707)
- Don’t use get_specific_users() when passing ‘include’ value to bp_get_members() (#3812)
Multisite
- Modifies loader to detect previous MS installations more reliably. Fixes redirect after finishing installation/upgrade wizard. (#3790)
Registration
- Introduced bp_blogs_get_subdomain_base() and also fixed subdomain address base on registration screen. (#3684)
- Improves security of registration process, by relying on WordPress validation functions (#3949)
Settings
- Redirect added back to settings page after save setting. (#3672)
- Ensures links are constructed with trailing slash in settings and xprofile components. (#3779)
XProfile
- Introduced ‘null_on_required’ parameter to bp_get_the_profile_field_options(), so that theme authors can display a blank option even in a required dropdown (#3698)
- Reworked the field deletion routine, so that user data is not removed automatically. (#3888)
- Introduces ‘multi_format’ parameter to xprofile_get_field_data(), so that themers can return comma-separated values as an option (#4109)
- Fixes bug that caused a null value in a datebox field to be saved as the UNIX epoch (#4187)