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_recorded
value for an activity stream comment (r9824) - Update
bp_activity_thumbnail_content_images
to 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_content
and previous$content
variables 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 thepost
post 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_Extractor
class. 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_Component
class. 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.js
to version 0.2.2. This library is used in the @mentions suggestions UI. (r9795) - Load
atwho.js
andcaret.js
in 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_key
indexes (r9716) - Add max index length to
meta_key
DB 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
$bp
global touches withbuddypress()
(#5138) - Improvements to escaping URLs (#6390, r9802, r9803)
- Beautify
/deprecated/2.1.php
(r9470)
Friends
- No changes.
General
- Delete
buddypress.pot
from 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
ABSPATH
checks (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_Member
delete()
andremove()
methods (#6327) - Pass template object to ‘loop_start’ and ‘loop_end’ actions in groups template classes (#6228)
- Improve documentation for
BP_Group_Extension
class (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
$_FILES
check 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_id
parameter 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_Query
class (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
break
to 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.css
stylesheet. (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.php
andsend-invites.php
templates (#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_query
properties 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.js
up to modern standards (r9529)