BuddyPress 2.2

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.