BuddyPress was updated to version 2.2, from version 2.1.1. Changelog:
Highlights
- Introduce Member Types API – Registering member types enables a strict separation of different and explicit types of community members.
- Post Types Activities – Register custom post types so they appear as activity stream items, complete with custom verbiage.
- 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.
Activity
- Add support for post type activity recording.
- Mentions: Add better support for responsive devices.
- Mentions: For performance reasons, do not prime results if the site / user has many users / friends.
- Ensure parent activity exists before adding an activity comment to it.
- Allow ‘b’, ‘i’, and ‘a:title’ to be used in activity content.
- Support multiple scopes in the bp_has_activities() stack.
- Alter the activity database table’s primary_link column from varchar(255) to text to handle long URLs (primarily for those using unicode).
- When redirecting unauthenticated users away from a single activity permalink, make sure the value of the redirect_to parameter is URL-encoded.
- Ensure the cached activity front page is cleared when an activity item is updated.
- Ensure activity actions are set when creating activity objects.
- Ensure that ‘count_total’ is available in the bp_has_activities() stack.
- Pass $pag_sql variable to ‘bp_activity_get_user_join_filter’ filter.
- Remove duplicate ‘bp_get_activity_show_filters’ filter.
- When generating an activity RSS feed, send a HTTP header to disable content type sniffing.
- Mentions: Update external JS libraries.
- Fix notice when an activity is generated for a post with no title.
Administration
- Add autocomplete support for at-mentions to the admin dashboard’s Visual Editor.
- Members admin: Fix issue where viewing the “Users” list would highlight the “Your Profile” admin menu item.
- Members admin: Set better access capabilities.
- Groups admin: Add better contextual errors when editing a group.
- XProfile admin: Update title CSS and JS to match WordPress 4.0 standards.
- Remove redundant “Save” buttons on the “Settings > BuddyPress > Pages” screen.
- Ensure admin notices look like an error message.
- Activity admin: Avoid a javascript error by making sure the ‘postboxes’ object is defined.
- XProfile admin: Add new hooks on main “Profile Fields” screen.
- XProfile admin: Add new hooks on “Add Field” screen.
- bp_core_add_admin_notice() function now supports a ‘type’ parameter.
- Members admin: Replace the word ‘avatar’ with ‘profile photo’.
- Introduce bp_core_get_admin_tabs() function.
Blogs
- On Blogs directory, move “Create A Site” link from page title to navigation tab.
- When un-spamming a user, restore the user’s blog records.
- Invalidate total blog count when site is deleted.
- Search consistently against blog title and description in BP_Blogs_Blog::get().
- Explicitly declare block_self=false for “Create a Site” button.
- Apply ‘widget_title’ filter to Recent Posts widget.
Core
- Better cache support across multisite and multi-network environments.
- Theme compatibility: Remove all links from titles of directory and single item pages.
- Fix issue where a BuddyPress directory is displayed on a page using a custom WordPress page template whose filename matches a BuddyPress component name.
- Ensure custom language files take precedence over GlotPress language packs.
- Better detection for false positives in meta SQL filters.
- 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.
- Properly highlight BuddyPress pages in a WordPress nav or page menu.
- Suggestions: Move blog checks from the activity component to core.
- Check cache for count functions that return zero.
- Adjust bp_modify_page_title() so that it can be used safely after the ‘wp_head’ action.
- Fix issue with passing an invalid pagination value in a URL.
- Introduce BP_Recursive_Query class.
- Introduce bp_sort_by_key() helper function.
- Introduce bp_setup_cache_groups() sub-action, for hooking into and appropriately prioritizing cache group additions.
- Introduce bp_form_field_attributes() helper function to output attributes for a given field.
- Introduce bp_sanitize_pagination_arg() function to sanitize pagination request values.
- Deprecate bp_core_add_global_group() function.
- Add method_exists() checks to BP_Loader::setup_actions() to prevent adding actions for methods that may not exist.
- Use sanitize_key() in bp_get/post_request() functions, to ensure $action is properly formatted.
- Bring BuddyPress core moderation and blacklist functions up to date with bbPress’s.
Friends
- Ensure activity items connected to a friendship are removed when a friendship is cancelled
- 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.
General
- Ensure pagination links are correctly set in case javascript is disabled.
- Add better support for touchscreen devices on form fields.
- Add support for Composer.
- Add Slack integration to .travis.yml.
- Various PHPDoc improvements.
- Various unit test fixes and improvements.
- Various Grunt improvements.
- Various Travis-CI improvements.
- Various improvements brought about by Scrutinizer-CI.
- Add additional paths to ignore for .gitignore and svn:ignore.
- Replace all instances of else if with elseif.
- 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.
- Fix typos.
Groups
- Add support for at-mention autocompletion in group activity streams.
- Enhance usability on a group’s “Send Invites” page.
- Create an activity item when a group’s details are updated.
- Include updated name/description in email notification after a group is updated.
- On Groups Directory, move “Create A Group” link from page title to navigation tab.
- Show banned members when on a group’s “Manage Members” page.
- Improvements to the “Edit Group” menu item in the WP Admin Bar.
- Pagination text for a groups loop with a single group should read “Viewing 1 group”.
- Temporary fix when fetching groups with a complex meta query.
- Improve how a group’s “Manage” sub-navigation tabs are generated. Tabs are now generated using bp_core_new_subnav_item().
- When fetching total group counts, don’t join against the group members table.
- In groups invite loop, remove duplicate call to fetch a user’s total friends.
- Add $user_id parameter to bp_groups_user_can_send_invites().
- Fix bug where a group could be created with a user ID of zero.
- Pass current group ID to BP_Group_Extension::display() class method.
- Use _n() for translations in bp_get_group_member_count().
- After a group is successfully created, clear cookies previously used by the group creation wizard.
- Add ‘group-$group_slug’ body CSS class when viewing a group page.
- Fix wrong parameter usage for groups_delete_membership_request() function.
- Explicitly declare block_self=false for “Create a Group” button.
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.
- When validating user signup, use the error message passed by WordPress instead of a generic error.
- Ensure unspammed users are indeed seen as unspammed on a multisite installation.
- On Members directory, make sure the AJAX search request is not using the default placeholder as the search term.
- Move ‘new_member’ activity items from the Extended Profiles component to the Members component.
- Introduce Member Types API.
- Introduce support for advanced XProfile queries in the bp_has_members() loop.
- Improve page title when on a member page.
- Move member-related widgets over from Core.
- When using the ‘meta_key’ and ‘meta_value’ parameters with BP_User_Query, ensure no results are displayed if there are no matches.
- Use bp_update_user_meta() in place of update_user_meta() to ensure plugins filtering user meta can properly manipulate the data.
- Use bp_update_user_meta() in bp_update_user_last_activity() to ensure plugins filtering user meta can properly manipulate a member’s last activity.
- Fix incorrect registration values when bp_get_signup_allowed() is used in certain cases.
- Allow multiple CSS classes to be passed to the ‘class’ argument in bp_core_fetch_avatar().
- Pass avatar $params variable to ‘bp_core_fetch_avatar_no_grav’ filter.
- Fix PHP notice when cropping an avatar caused by a conflict between the ‘w’ avatar crop parameter and WP_Query’s ‘w’ parameter.
- Fix PHP notice on avatar upload screen after account registration.
Messages
- Improved UI for managing messages.
- Add “Read/Unread” links for each message thread.
- Better message thread bulk management.
- Introduce noscript support for bulk actions.
- Fix oEmbed in private messages.
- Fix recipient count when there are five or more participants in a private message thread.
- For the private message delete button, change the link title from ‘Delete Message’ to ‘Delete Conversation’.
- When a member sends themselves a private message, ensure the appropriate description is displayed.
- Introduce messages meta table to allow plugin developers to record information about a message.
- Support meta queries in bp_has_message_threads() stack.
- Grab all message IDs before deleting a message thread.
- Introduce new actions and filters in the BP_Messages_Thread class.
- Introduce bp_get_thread_recipients_count() and bp_get_thread_recipients_list() functions.
- 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(), and bp_messages_bulk_management_dropdown() functions.
- Deprecate bp_get_the_thread_recipients().
- Update autocomplete JS to better handle long cookie values.
- Improvements to bp_message_search_form().
Notifications
- Add ability to bulk manage notifications.
- Use gettext context for “Read” subnav title.
Profiles
- Introduce support for advanced XProfile queries in the bp_has_members() loop.
- Switch from dynamically-named cache groups to static-named cache groups.
- Fix incorrect results when using xprofile_get_field_id_from_name() with a field name that matches an xprofile option value in the database.
Settings
- Rename the “Settings > Profile” tab to “Settings > Profile Visibility”.
- Don’t show “Settings > Email” tab when there are no options to set.
- Better separation of template notices on the user settings page.
- Fix PHP notice when changing your email address.
Theme
- If set in the admin dashboard’s “Pages” screen, use a component’s mapped page template as the wrapper template used by BuddyPress.
- Improve default font sizes for better theme compatibility.
- Make activity dropdown filter wider for better theme compatibility.
- Use ‘type=”email”‘ for email inputs in registration and settings templates.
- Ensure template notices are displayed in the Twenty Fifteen theme.
- Make “no members found” message on group members page more general.
- Improve styling of widgets with avatars.
- Re-enable ability to toggle the “Blog Details” block on registration page.
- Re-enable AJAX functionality for the “Add/Remove” friend button located in the member header.
- Fix at-mention name population when clicking on a user’s “Public Message” button.
- Remove BuddyPress-related cookies when clicking on the “Log out” link located in the WordPress Toolbar.
- When minified assets have not been built yet, ensure that CSS / JS can be located when running BuddyPress from the /src/ directory.
- Add ‘bp-ajax-message’ CSS class to message containers returned in AJAX responses.
- Prevent variable collision conflicts when using WP’s heartbeat JS.
- Ensure the ‘bp_activity_custom_update’ filter defaults to false.
- Use bp_blog_class() to output row classes in blogs-loop.php template.
- For member blogs template, use same select ID as the blogs directory template.
- For member groups template, use same select ID as the groups directory template.
- For message search form, improve label markup.
- Add better detection for the group member search field.