Version 2.2
Version 2.2 is a major BuddyPress feature release.
For Version 2.2, the database version (_bp_db_version in wp_options) was 9181, and the Trac revision was 9441. Read the full ticket log here here.
Highlights
- Introduce Member Types API – Registering member types enables a strict separation of different and explicit types of community members. View the codex article for more information.
- Post Types Activities – Register custom post types so they appear as activity stream items, complete with custom verbiage. View the codex article for more information.
- Message Meta – Private message conversations made infinitely more flexible with an additional metadata table.
- Complex Queries – The Activity and Extended Profiles components now support advanced conditional logic, like nested clauses and multiple operators — A AND ( B OR C ). The Activity component now also supports querying by multiple scopes.
- Cache Improvements – We now properly group and cache several different types of queries and objects, with an emphasis on multisite and multi-network environments.
User Features
Activity
- Add support for post type activity recording. View the codex article for more information. (#5669)
- Mentions: Add better support for responsive devices (#5969)
- Mentions: For performance reasons, do not prime results if the site / user has many users / friends (#5950)
- Ensure parent activity exists before adding an activity comment to it (#5907)
- Allow
'b'
,'i'
, and'a:title'
to be used in activity content (#5835)
Administration
- Add autocomplete support for at-mentions to the admin dashboard’s Visual Editor (#5969)
- Members admin: Fix issue where viewing the “Users” list would highlight the “Your Profile” admin menu item (#5978)
- Members admin: Set better access capabilities (#5932)
- Groups admin: Add better contextual errors when editing a group (#5854)
- XProfile admin: Update title CSS and JS to match WordPress 4.0 standards (r9084)
- Remove redundant “Save” buttons on the “Settings > BuddyPress > Pages” screen (#6044)
- Ensure admin notices look like an error message (#6041)
Blogs
- On Blogs directory, move “Create A Site” link from page title to navigation tab (#6008)
- When un-spamming a user, restore the user’s blog records (#5857)
Core
- Better cache support across multisite and multi-network environments (#5733)
- Theme compatibility: Remove all links from titles of directory and single item pages (r9157)
- Fix issue where a BuddyPress directory is displayed on a page using a custom WordPress page template whose filename matches a BuddyPress component name (#5721)
Friends
- Ensure activity items connected to a friendship are removed when a friendship is cancelled (#6055)
General
- Ensure pagination links are correctly set in case javascript is disabled (#5967)
- Add better support for touchscreen devices on form fields (#5914)
Groups
- Add support for at-mention autocompletion in group activity streams (#5934)
- Enhance usability on a group’s “Send Invites” page (#5509)
- Create an activity item when a group’s details are updated (#5880)
- Include updated name/description in email notification after a group is updated (#5879)
- On Groups Directory, move “Create A Group” link from page title to navigation tab (#6008) – Read how to manage this change for themes
- Show banned members when on a group’s “Manage Members” page (#6013)
- Improvements to the “Edit Group” menu item in the WP Admin Bar (#6002)
- Pagination text for a groups loop with a single group should read “Viewing 1 group” (r9036)
Members
- Refactor member activation URL to better avoid email spam filters. New URL looks like this –
example.com/activate/XXX
. The older URL format –example.com/activate/?key=XXX
– is still supported for backward compatibility. (#5831) - When validating user signup, use the error message passed by WordPress instead of a generic error (#6007)
- Ensure unspammed users are indeed seen as unspammed on a multisite installation (#5275)
- On Members directory, make sure the AJAX search request is not using the default placeholder as the search term (#5960)
- Move
'new_member'
activity items from the Extended Profiles component to the Members component (#5807)
Messages
- Improved UI for managing messages (#6005)
- Add “Read/Unread” links for each message thread (#6005)
- Better message thread bulk management (#6065, #4531)
- Introduce
noscript
support for bulk actions (#6005) - Fix oEmbed in private messages (#5990)
- Fix recipient count when there are five or more participants in a private message thread (#5327)
- For the private message delete button, change the link title from
'Delete Message'
to'Delete Conversation'
(#5908) - When a member sends themselves a private message, ensure the appropriate description is displayed (#6087)
Notifications
- Add ability to bulk manage notifications (#5513)
Settings
- Rename the “Settings > Profile” tab to “Settings > Profile Visibility” (#5599)
- Don’t show “Settings > Email” tab when there are no options to set (#5441)
- Better separation of template notices on the user settings page (#6112)
Theme
- If set in the admin dashboard’s “Pages” screen, use a component’s mapped page template as the wrapper template used by BuddyPress (#6065)
- Improve default font sizes for better theme compatibility (#6022)
- Make activity dropdown filter wider for better theme compatibility (#6065)
- Use
'type="email"'
for email inputs in registration and settings templates (#5914) - Ensure template notices are displayed in the Twenty Fifteen theme (#6000)
- Make “no members found” message on group members page more general (#5935)
- Improve styling of widgets with avatars (#5817)
- Re-enable ability to toggle the “Blog Details” block on registration page (#5846)
- Re-enable AJAX functionality for the “Add/Remove” friend button located in the member header (#5826)
- Fix at-mention name population when clicking on a user’s “Public Message” button (#6142)
- Remove BuddyPress-related cookies when clicking on the “Log out” link located in the WordPress Toolbar (#6170)
Development, Themes, Plugins
Activity
- Support multiple scopes in the
bp_has_activities()
stack (#4988) - Alter the activity database table’s
primary_link
column fromvarchar(255)
totext
to handle long URLs (primarily for those using unicode) (#5890) - When redirecting unauthenticated users away from a single activity permalink, make sure the value of the
redirect_to
parameter is URL-encoded (r9062) - Ensure the cached activity front page is cleared when an activity item is updated (#6127)
- Ensure activity actions are set when creating activity objects (#6126)
- Ensure that
'count_total'
is available in thebp_has_activities()
stack (#5915) - Pass
$pag_sql
variable to'bp_activity_get_user_join_filter' filter (r9087)
- Remove duplicate
'bp_get_activity_show_filters'
filter (r9133) - When generating an activity RSS feed, send a HTTP header to disable content type sniffing (r9212)
- Mentions: Update external JS libraries (r9097, r9246)
- Fix notice when an activity is generated for a post with no title (#6119)
Administration
- Activity admin: Avoid a javascript error by making sure the
'postboxes'
object is defined (#6050) - XProfile admin: Add new hooks on main “Profile Fields” screen (#5673)
- XProfile admin: Add new hooks on “Add Field” screen (#5917)
bp_core_add_admin_notice()
function now supports a'type'
parameter (r9171)- Members admin: Replace the word
'avatar'
with'profile photo'
(#6151) - Introduce
bp_core_get_admin_tabs()
function (r9205)
Blogs
- Invalidate total blog count when site is deleted (#6062)
- Search consistently against blog title and description in
BP_Blogs_Blog::get()
(#5858) - Explicitly declare
block_self=false
for “Create a Site” button (#6096) - Apply
'widget_title'
filter to Recent Posts widget (#6056)
Core
- Ensure custom language files take precedence over GlotPress language packs (#5887)
- Better detection for false positives in meta SQL filters (r9073)
- When deleting a WP page that is associated with a BuddyPress component, ensure that this page is also deleted from the BP directory page IDs option as well (#5681)
- Properly highlight BuddyPress pages in a WordPress nav or page menu (#5997)
- Suggestions: Move blog checks from the activity component to core (r9243)
- Check cache for count functions that return zero (#6012, r9363)
- Adjust
bp_modify_page_title()
so that it can be used safely after the'wp_head'
action (#6077) - Fix issue with passing an invalid pagination value in a URL (#5796)
- Introduce
BP_Recursive_Query
class (r9253) - Introduce
bp_sort_by_key()
helper function (#6047) - Introduce
bp_setup_cache_groups()
sub-action, for hooking into and appropriately prioritizing cache group additions (r9312, r9314) - Introduce
bp_form_field_attributes()
helper function to output attributes for a given field (r9329) - Introduce
bp_sanitize_pagination_arg()
function to sanitize pagination request values (r9410) - Deprecate
bp_core_add_global_group()
function (r9313) - Add
method_exists()
checks toBP_Loader::setup_actions()
to prevent adding actions for methods that may not exist (r9311) - Use
sanitize_key()
inbp_get/post_request()
functions, to ensure$action
is properly formatted (r9346) - Bring BuddyPress core moderation and blacklist functions up to date with bbPress’s (r9392, r9395, r9396)
Friends
- Only create a single activity item when a friendship is created and ensure that this friendship item is displayed in each user’s personal activity streams (#6040)
General
- Add support for Composer (#5928)
- Add Slack integration to .travis.yml (r9126)
- Various PHPDoc improvements (#5022, #5936, #5938, #5941, #5942, #5944, #5945, #5946, #5947, #5949, #5970, #5986, #6023, #6070, r9037, r9221, r9375)
- Various unit test fixes and improvements (#5910, #5965, #6036, #6129, r9061, r9107, r9117, r9118, r9120, r9137, r9138, r9139, r9140, r9141, r9142, r9164, r9209, r9219, r9233, r9234, r9275, r9281, r9282, r9294, r9295, r9300, r9302, r9317, r9364, r9405)
- Various Grunt improvements (#5962, #6015, #6064, #6104,, r9228)
- Various Travis-CI improvements (#6078, r9081, r9083 , r9237)
- Various improvements brought about by Scrutinizer-CI (#5891, #6097, r9288, r9318, r9351)
- Add additional paths to ignore for
.gitignore
andsvn:ignore
(#6017) - Replace all instances of
else if
withelseif
- Remove some run-on sentences, also some comma splices, they were kind of annoying, they made BuddyPress more annoying to use, this is much better (#5878)
- Fix typos (#6062)
Groups
- Temporary fix when fetching groups with a complex meta query (r9082)
- Improve how a group’s “Manage” sub-navigation tabs are generated. Tabs are now generated using
bp_core_new_subnav_item()
. (#5994) - When fetching total group counts, don’t join against the group members table (#5584)
- In groups invite loop, remove duplicate call to fetch a user’s total friends (#6079)
- Add
$user_id
parameter tobp_groups_user_can_send_invites()
(#6031) - Fix bug where a group could be created with a user ID of zero (#5983)
- Pass current group ID to
BP_Group_Extension::display()
class method (#5533) - Use
_n()
for translations inbp_get_group_member_count()
(r9047) - After a group is successfully created, clear cookies previously used by the group creation wizard (#5867)
- Add
'group-$group_slug'
body CSS class when viewing a group page (#5848) - Fix wrong parameter usage for
groups_delete_membership_request()
function (r9309) - Explicitly declare
block_self=false
for “Create a Group” button (#6096)
Members
- Introduce Member Types API. View the codex article for more information. (#6006)
- Introduce support for advanced XProfile queries in the
bp_has_members()
loop (#5839) - Improve page title when on a member page (#5838)
- Move member-related widgets over from Core (r9323)
- When using the
'meta_key'
and'meta_value'
parameters withBP_User_Query
, ensure no results are displayed if there are no matches (#5904) - Use
bp_update_user_meta()
in place ofupdate_user_meta()
to ensure plugins filtering user meta can properly manipulate the data (#5884, #5988) - Use
bp_update_user_meta()
inbp_update_user_last_activity()
to ensure plugins filtering user meta can properly manipulate a member’s last activity (#5988) - Fix incorrect registration values when
bp_get_signup_allowed()
is used in certain cases (#6043) - Allow multiple CSS classes to be passed to the
'class'
argument inbp_core_fetch_avatar()
(#6069) - Pass avatar
$params
variable to'bp_core_fetch_avatar_no_grav'
filter (#5958) - Fix PHP notice when cropping an avatar caused by a conflict between the
'w'
avatar crop parameter and WP_Query’s'w'
parameter (#5999) - Fix PHP notice on avatar upload screen after account registration (#5899)
Messages
- Introduce messages meta table to allow plugin developers to record information about a message (#3083)
- Support meta queries in
bp_has_message_threads()
stack (#6063) - Grab all message IDs before deleting a message thread (r9184)
- Introduce new actions and filters in the
BP_Messages_Thread
class (r9165) - Introduce
bp_get_thread_recipients_count()
andbp_get_thread_recipients_list()
functions (r9095) - Introduce
bp_the_message_thread_mark_unread_url()
,bp_the_message_thread_mark_read_url()
,bp_message_thread_total_count
,bp_message_thread_total_and_unread_count()
, andbp_messages_bulk_management_dropdown()
functions (r9161) - Deprecate
bp_get_the_thread_recipients()
(r9095) - Update autocomplete JS to better handle long cookie values (#5959)
- Improvements to
bp_message_search_form()
(#6113)
Notifications
- Use gettext context for “Read” subnav title (#6121)
Profiles
- Introduce support for advanced XProfile queries in the
bp_has_members()
loop (#5839) - Switch from dynamically-named cache groups to static-named cache groups (r9336)
- Fix incorrect results when using
xprofile_get_field_id_from_name()
with a field name that matches an xprofile option value in the database (#6082)
Settings
- Fix PHP notice when changing your email address (#5982)
Theme
- When minified assets have not been built yet, ensure that CSS / JS can be located when running BuddyPress from the
/src/
directory (#5963) - Add
'bp-ajax-message'
CSS class to message containers returned in AJAX responses (#5918) - Prevent variable collision conflicts when using WP’s heartbeat JS (#6003)
- Ensure the
'bp_activity_custom_update'
filter defaults to false (#6021) - Use
bp_blog_class()
to output row classes in blogs-loop.php template (#5927) - For member blogs template, use same
select
ID as the blogs directory template (#5996) - For member groups template, use same
select
ID as the groups directory template (#5998) - For message search form, improve
label
markup (#6010) - Add better detection for the group member search field (#6033)