Version 2.3.0
Version 2.3.0 is a major BuddyPress feature release.
For Version 2.3.0, the database version (_bp_db_version in wp_options) was 9848, and the Trac revision was 9912. Read the full ticket log here here.
Highlights
- Upload Profile Pictures with Drag and Drop – You can now drag and drop any image you choose to upload as your profile photo. The interface is mobile-ready and now includes integration with phone or laptop cameras. This is an example of what can be developed using the new Attachments API, the long-awaited foundation for media-related BuddyPress components and features.
- Companion Stylesheets For Themes – Improved styling and integration of BuddyPress components with bundled WordPress themes, Twenty Fifteen and Twenty Fourteen. Codex guide
- Blog Post Activity – BuddyPress now generates better excerpts in the activity stream for posts containing images or other embedded media content.
- Member Type Directories – Create directories of member types on your site using the Member Type API.
- Star Private Messages – Mark important messages in your inbox with a star.
- Notification Meta – Notifications made infinitely more extensible with an additional metadata table.
User Features
Activity
- BuddyPress now generates better excerpts in the activity stream for posts containing images or other embedded media content (#6177)
- Only show “Favorites” nav items if favorites are enabled (#6214)
- Activity Akismet integration requires Akismet v3+ (#6191)
Administration
- Activity admin: Fix loading image when replying to an item in multisite.(#6337)
- XProfile admin: Allow administrators to set a user’s photo using the new Avatars UI (#6290, r9759)
- XProfile admin: Update Profile Fields UI (#6318, #6313, #6315)
- Show the “Are you sure?” prompt in the BuddyPress admin area before deleting specific items (#6317)
- Add
<label>element for options on the “Settings > BuddyPress > Components” screen (#6284)
Blogs
- Fix issue when recording a site with no name into BuddyPress (#4852)
- Do not show “New Site” activity filter on single group pages and other instances (#6411)
- Delete cache when editing a site on the “Network Admin > Sites” page (#6365)
- Add CSS
'count'/'no-count'class to the displayed user’s “Sites” profile nav label (#6207)
Core
- Fix issue when using a WordPress timezone with
bp_format_time()(#2693) - Use protocol-relative URLs for Gravatar (
//www.gravatar.com) (#6135) - Let jCrop set initial crop coordinates on its own (#6282)
- In
bp_create_excerpt(), do not strip HTML comments. Fixes issue when using the<!--more-->tag in blog posts. (#3680) - Add better support for touchscreen devices for the login widget (#6269)
Friends
- Fix issue when attempting to update an existing friendship relationship (#6247)
Groups
- Use new Avatars UI to upload a group’s photo by drag-and-drop (#6290,
r9757) - Allow group avatars to be disabled (#4677)
Members
- Introduce member-type-specific Members directories. Plugin developers should view the codex article and the commit message for more info. (#6286)
- Filter return value of
wp_registration_url()so it returns the URL of BuddyPress’s register page (#6208)
Messages
- Allow users to star private messages #6331)
- Ensure corresponding notifications are deleted when a message thread is deleted (#6329)
- Cache results when fetching messages and checking message access (#6221)
- Cache results when fetching the recipients of a private message thread (#6220)
Notifications
- Clear cache when updating a notification (#6445)
Profiles
- Use new Avatars UI to upload your photo by drag-and-drop or by taking a photo using your webcam (#6290,
r9757) - Fix broken selection of default values for checkboxes, select boxes, and multi-select boxes (#6134)
- Allow field options named
'0'to be created (#6443)
Settings
- When a user is changing their password, display an error message if the new password is the same as the current password (#6111)
Theme
- Improved styling and integration with WordPress bundled theme, Twenty Fifteen (#6291)
- Improved styling and integration with WordPress bundled theme, Twenty Fourteen (#6338)
- When loading RTL CSS, do not load the LTR CSS as well (#6200)
- Fix issue when enqueuing additional assets (#5972)
Development, Themes, Plugins
Activity
- Introduce
comment_date_recorded_raw()functions for retrieving an unformatteddate_recordedvalue for an activity stream comment (r9824) - Update
bp_activity_thumbnail_content_imagesto check that height/width attributes exist on<img>
tags before trying to reference them (#6159) - Improvements to
BP_Activity_Activity::delete()method (#6323) - When adding an activity, allow arguments to be filtered using
bp_parse_args()(#6293) - Pass
$new_contentand previous$contentvariables to'bp_insert_activity_meta'filter (r9721) - Pass the user ID of the immediate parent comment author to the
'bp_activity_sent_reply_to_reply_email'(#6375) - Add hook documentation (r9833)
- Remove usage of
extract()inbp_has_activities()(r9536)
Administration
- BuddyPress. The capital P is for ‘Proud’ (#6227)
- Fix
<br />elements in the Dashboard contextual help for Profiles (#6439)
Blogs
- Make sure tracked post types registered using the
'bp_blogs_record_post_post_types'filter will have the same activity tracking arguments as thepostpost type (#6306) - Specify a
'directory_title'for the bp-blogs component (#6339) - Improvements to
bp_get_blog_class()function (r9886) - Beautify
bp-blogs-widgets.php(r9469)
Core
- Introduce Attachments API. Developers can view this codex article for more info about the API. (#6278)
- Overhaul avatar code to use new Attachments API (#6290, r9623, r9624)
- Introduce
BP_Media_Extractorclass. This parses a block of text and extracts info about media contained within it. Developers can view how activity excerpts are generated as an example. (r9619) - Introduce ability for components to register new features in the
BP_Componentclass. Developers can view how the star private messages feature is implemented as an example. (r9844) - Introduce
bp_core_get_root_option()and use throughout codebase (#6045) - Introduce
'bp_core_user_get_specific_users_count_sql'and'bp_core_user_get_specific_users_paged_sql'filters inBP_Core_User::get_specific_users()(#6352) - Add hook documentation (#5929, r9848)
- Update
caret.jsto version 0.2.2. This library is used in the @mentions suggestions UI. (r9795) - Load
atwho.jsandcaret.jsin page footer (r9796) - Do not add a trailing slash to links in
bp_core_new_subnav_item()(#6353) - Improved attribute escaping when outputting subnav link items (r9702)
- Introduce
bp_pre_schema_upgrade()and use it to drop oldmeta_keyindexes (r9716) - Add max index length to
meta_keyDB indices (r9695) - Improve AJAX referer determination during URI parsing (#6252)
- Do not let
bp_create_excerpt()truncate to empty strings (#6254) - Undeprecate jquery.scroll-to.js (#6216)
- Add hook documentation (#5940)
- Replace all remaining
$bpglobal touches withbuddypress()(#5138) - Improvements to escaping URLs (#6390, r9802, r9803)
- Beautify
/deprecated/2.1.php(r9470)
Friends
- No changes.
General
- Delete
buddypress.potfrom repository root. For GlotPress going forward, we will be using:
plugins.svn.wordpress.org/buddypress/trunk/buddypress.pot(#5621) - Formalize usage of directory permalinks throughout BuddyPress components (r9466, r9467,
r9468, r9472) - Split each component’s classes file, and move each individual class into its own file (#6083)
- Rename component admin files to avoid confusion with non-admin files sharing the same name (#6051)
- Pass additional arguments to all widgets using the
'widget_title'filter (#6222) - Improved plural forms for localizable strings (#6368)
- HTTPSify all external URLs if applicable (#6184)
- Update
bp_setup_current_user()to avoid output warning on the WordPress Customizer screen (#6046) - Fix strict standards warnings (#5108, #6185)
- Various PHPDoc improvements (r9457, r9461, r9462, r9465, r9712, r9862, r9877)
- Various unit test fixes and improvements (#6009, #6223, #6419, r9483, r9560, r9578,
r9579, r9580, r9610, r9655, r9797, r9817, r9818) - Various Grunt improvements (#6263, #6264, #6267, #6351, #6380, r9584, r9902)
- Various JSHint improvements (#6265, #6266)
- Various SVN improvements (#6283, #6409, r9486, r9766)
- Various improvements brought about by Scrutinizer-CI (#5891, r9462, r9637)
- Simplify
ABSPATHchecks (r9458) - Capitalization of “JavaScript” where appropriate (#6249)
Groups
- Add hook documentation (#5943)
- Introduce
'groups_action_sort_creation_steps'action (#6232) - Introduce
'before'/'after'hooks inBP_Groups_Memberdelete()andremove()methods (#6327) - Pass template object to ‘loop_start’ and ‘loop_end’ actions in groups template classes (#6228)
- Improve documentation for
BP_Group_Extensionclass (r9798) - Limit scope of group invitation delete methods in
groups_uninvite_user()andgroups_reject_invite()(#6209, r9810) - Use
groups_remove_member()instead ofgroups_uninvite_user()ingroups_leave_group()(#6209, r9811) - Alter
groups_remove_member()to allow it to work outside of a single-group context
may not be true (#6209, r9811) - Streamline last activity update meta calls (#6158)
- Bug fixes for
bp_group_status_message()function(#6319) - Improvements to
bp_get_group_class()function (r9885) - Remove redundant
$_FILEScheck inbp_get_group_has_avatar()function (#6203) - Avoid PHP notices when calling
groups_delete_groupmeta()on group with no metadata (#6326)
Legacy Forums
bp_the_topic_post_is_mine()is an amazing function, but it doesn’t need to call itself (r9792)
Members
- Introduce
bp_has_member_type()(#6138) - Introduce
bp_remove_member_type()function (#6188) - Better logic for blog switching when processing member type tax query (r9661)
- Improvements to
bp_member_class()function (#6384, r9884) - Add hook documentation (#5944, #6262, r9669)
- Pass additional arguments to various member avatar filters (#6392)
- Improvements to member widget classes (#6361, #6362, #6363)
Messages
- Introduce
bp_get_max_thread_recipients_to_list()function (#6150) - Introduce
messages_get_message_thread_id()function (r9845) - Add
$thread_idparameter toBP_Messages_Thread::get_recipients()(r9752)
Notifications
- Introduce notification metadata table to allow plugin developers to record information about a notification (#6257)
- Support meta queries in
bp_has_notifications()stack (r9574) - Pass the notification object to the
'bp_get_the_notification_description'filter (#6239)
Profiles
- Introduce
BP_XProfile_Meta_Queryclass (r9722) - Introduce
'bp_xprofile_admin_new_field_additional_settings'action (#6272) - Introduce
'bp_xprofile_groups'cache group, to replace'bp'cache group usage (r9676) - Refactor
bp_has_profile()stack to support passing arguments as associative arrays (r9686) - Improvements to
bp_xprofile_update_meta_cache()(r9693) - Sanitize field options on save (r9719)
- Improve parameter sanitization in
xprofile_insert_field()(#6354) - Process
'is_default_option'properly inxprofile_insert_field()andBP_XProfile_Field::save()(#6137) - Use
self::get()inBP_XProfile_Group::populate()to inherit caching goodness (r9677) - Move field
save()sanitization into filters for consistency between save method & saving via the admin UI. (r9678, r9681) - Clean up
bp_profile_group_tabs()(r9684) - Remove usage of
extract()inbp_has_profile()(r9685) - Avoid debug notices in
BP_XProfile_Field:;admin_validate()method (r9659) - Remove unused parameter from
BP_XProfile_ProfileData::get_data_for_user()(r9674) - Correct i18n string in
bp_profile_last_updated()(r9794)
Settings
- Add missing
breakto switch statement inbp_settings_action_general()(r9793)
Theme
- Load theme-specific supplementary CSS stylesheet if found. BuddyPress will look for a CSS file called
{stylesheet}.css, where{stylesheet}is the slug of the current theme or parent theme. This
will enable theme developers to add custom modifications for BuddyPress without overriding the main bp-legacybuddypress.cssstylesheet. (r9694) - Add improved CSS classes to notification table elements (#6289)
- Add
'sitewide-notices'CSS class to notice loop template (#6424) - Add styles to new
'warning'message type (#6423) - Add hook documentation (#5948)
- Send proper page number in AJAX pagination requests (#6394)
- Change placement of invite nonce and submit button in
invites-loop.phpandsend-invites.phptemplates (#5924) - Remove nested form on sites directory template (#6427)
- Remove redundant ARIA
role="main"declarations from templates (#6456) - For AJAX private message replies, use the message loop and message loop template functions (#6321)
- Add missing
'bp_messages_inbox_list_header'hook to message loop template (#6328) - Use
bp_member_class()function in message loop template (r9884) - Streamline toggling of
$wp_queryproperties during theme compatibility (#6153) - Do not look for minified assets when running from a trunk installation (#6213,
#6457) - Use strict comparisons in
buddypress.js(r9528) - Bring window reload code in
buddypress.jsup to modern standards (r9529)