[6837]
|
johnjamesjacoby
|
Forms: include forum/topic ID in nonce checks.
This change adds in missing object IDs, fixing a bug causing form content to be lost when an error had occurred.
Props wpdennis. Fixes #3209.
|
[6835]
|
johnjamesjacoby
|
Login: Do not prematurely escape `$redirect_to` in `bbp_logout_url()`.
This change fixes a bug causing the redirect URL to be escaped before it's encoded.
Props nevis2us. Fixes #3199.
|
[6834]
|
johnjamesjacoby
|
Converter: UX improvements to import experience:
* Move Monitor to upper-right
* Move actions into Monitor
* Make database fields read-only when importer is running
* Add a spinner
See #3207 for inspiration.
|
[6833]
|
johnjamesjacoby
|
Converter: Remove unused argument in `clean()` method usage.
See #3207.
|
[6832]
|
johnjamesjacoby
|
Converter: make a few `private` properties `protected` so subclasses can reach them.
This change fixes a bug causing the e107v1 converter to fail.
Props wpdennis. Fixes #3207.
|
[6831]
|
johnjamesjacoby
|
Build: update various out-of-date packages.
|
[6830]
|
johnjamesjacoby
|
Subscriptions: simplify edit logic for getting `checked()` value.
Props wpdennis. See #3206.
|
[6829]
|
johnjamesjacoby
|
Subscriptions: cast function results to `(int)` so strict comparisons pass.
This change fixes a bug where subscription checkboxes and UI elements could show/use incorrect values.
Props wpdennis. Fixes #3206.
|
[6828]
|
johnjamesjacoby
|
Engagements: enforce `absint()` on function parameters in engagements API.
Also fixes a bug causing an `array_search()` to erroneously fail.
See #3206.
|
[6827]
|
johnjamesjacoby
|
Counts: Introduce a cacheable parent/type/status wrapper, filter helpers.
This change introduces a common query function for totalling up all counts by type & status, and caching the results for later usages. By doing this, we can avoid running multiple queries for the same public or non-public counts.
Also uses `bbp_number_not_negative()` in a few places where negative counts are never allowed.
|
[6826]
|
johnjamesjacoby
|
Replies: use existing `reply_to` value if none is passed.
This change fixes a bug that would cause the reply hierarchy to be broken when non-moderator users would edit their existing replies within the allotted editing period.
Props wpdennis. Fixes #3205.
|
[6824]
|
johnjamesjacoby
|
Search: update `bbp_get_search_terms()` to only accept a string.
This change prevents non-string payloads from being encoded & trimmed.
|
[6823]
|
johnjamesjacoby
|
Activation: avoid creating initial content more than once.
This change adds an `_bbp_flag_initial_content` option key to check against, to avoid creating the starter content more than one time. It also stores `bbp_get_default_options()` in a local static variable to avoid recreating the same array multiple times.
Because of the way plugin activation and site creation work, `is_multisite()` checks are used to avoid fatal errors.
|
[6822]
|
johnjamesjacoby
|
Template: add `is_multisite()` check to `bbp_is_site_public()`.
This change avoids a potential fatal error if this core function is used directly.
|
[6821]
|
johnjamesjacoby
|
Help: Update Forums & Topics help text.
* Tweak action order
* Grammar improvements
* Add "Close" action to forums
|
[6820]
|
johnjamesjacoby
|
Converter: remove `safe_mode` check from `BBP_Converter::maybe_set_memory()`.
This was deprecated in PHP 5.3.0 and removed in 5.4.0. Instead, this change employs the following:
* Moves keys and values into a filterable array
* Looks for disabled functions and avoids them
* Adds error control operators as needed
|
[6819]
|
johnjamesjacoby
|
Prefer `sanitize_html_class()` over `esc_attr()`.
This change uses the correct formatting function in places where potentially untrusted class strings are ran through `array_map()`.
|
[6817]
|
johnjamesjacoby
|
Users: make sure "Forum Role" is next to "Site Role" in User's List Table.
This change comes with a CSS tweak to keep the role column at 15% width, and bumps the asset version accordingly.
|
[6816]
|
johnjamesjacoby
|
Intercept: return default value if an invalid number of args is parsed.
Also pass a `$user_id` into favorites & subscriptions links functions.
These changes together will prevent notices & errors in certain intercept conditions.
|
[6815]
|
johnjamesjacoby
|
BuddyPress: tweak notifications item IDs to provide a bit more context.
This change also fixes a bug with hierarchical reply notifications.
Props jpolakovic. Fixes #2834.
|
[6814]
|
johnjamesjacoby
|
Common: introduce `bbp_get_post_types()` and use where appropriate.
Fixes #2769.
|
[6813]
|
johnjamesjacoby
|
Widgets: remove translation strings that only had placeholders in them.
This change also switches output for the reply date option from `div` to `time` elements.
Fixes #2851.
|
[6812]
|
johnjamesjacoby
|
Widgets: add `'customize_selective_refresh' to widgets.
Props netweb. Fixes #2933.
|
[6811]
|
johnjamesjacoby
|
Subscriptions: prevent admin area topic updates from unsubscribing users.
Fixes #3185.
|
[6810]
|
johnjamesjacoby
|
BuddyPress: prefer `empty()` check on `disable_blogforum_replies` setting.
This fixes a bug causing some activity to not appear in relative activity streams.
Fixes #3180.
|
[6809]
|
johnjamesjacoby
|
Converter: update phpBB importer to use `user_form_salt`.
Props jrf. Fixes #3192.
|
[6808]
|
johnjamesjacoby
|
BuddyPress: add more `fully_loaded()` methods to component classes.
This will allow an entry point for plugins to alter these classes how they see fit.
Fixes #3192.
|
[6807]
|
johnjamesjacoby
|
BuddyPress: more efficient includes method.
Props r-a-y. Fixes #3193.
|
[6806]
|
johnjamesjacoby
|
Templates: remove `action` attribute from several forms.
This improves support for third-party implementations (shortcodes, BuddyPress, etc...) because template parts can be called from anywhere.
Fixes #3030.
|
[6805]
|
johnjamesjacoby
|
BuddyPress: clean up new `get_profile_url()` method.
See r6804.
|
[6804]
|
johnjamesjacoby
|
BuddyPress: updates to member profile URL filters:
* Introduce methods for known user profile pages
* Update public filter methods to use a private method
This change uses new intercept hooks to make sure bbPress profile URLs are turned into BuddyPress ones instead.
See #3814.
|
[6803]
|
johnjamesjacoby
|
Intercept: updates to `bbp_maybe_intercept()`:
* Use `bbp_parse_args()` internally
* Compare against known default return value
* Use `call_user_func_array()` to avoid using `extract()`
This change allows the intercept API to work a bit more smoothly with filters that have multiple arguments passed into them. Previous to this, those filters may have dropped their arguments, or otherwise not passed the proper arguments into their filter call.
This fixes a regression related to BuddyPress profile URL overrides.
See #3814.
|
[6802]
|
johnjamesjacoby
|
Tests: remove slashes from unpretty URLs before `#` anchor links.
|
[6801]
|
johnjamesjacoby
|
Tests: update default text to match what's new for 2.6.0.
|
[6796]
|
johnjamesjacoby
|
Tools: Update Editor Configuration.
This change removes some file-types and stops trimming whitespace from markdown files.
Fixes #3197. Props netweb.
|
[6795]
|
johnjamesjacoby
|
Templates: revert r6641 due to reports of styling breakage.
This reverts back to the 2.5-type behavior of always making sure bbPress styling & scripts are available on all theme-side pages.
We will revisit this enhancement again in a future release.
See #3138. Props robin-w.
|
[6794]
|
johnjamesjacoby
|
Feeds: bring back accidentally deleted semi-colon from r6793.
|
[6793]
|
johnjamesjacoby
|
Feeds: use `esc_url_raw()` in topics & replies generator URLs.
This brings generator tag handling up to par with recent WordPress changes.
|
[6792]
|
johnjamesjacoby
|
Counts: introduce sub-action for post status transitions.
We'll use this for micro-managing child post counts on a per-type, per-status basis.
See #1799.
|
[6791]
|
johnjamesjacoby
|
Admin: improve topic/reply row-action UX.
This change includes more improvements to how topics and replies are toggled from an admin area list-table:
* Move "Empty Spam" buttons to their own actions div
* Allow spam/trash/approve/unapprove from any other status, so topics/replies can be more freely moved around
* Add public/non-public functions for replies to match topics
See #1799.
|
[6790]
|
johnjamesjacoby
|
Admin: improve topic/reply row-action UX.
This change includes a few improvements to how topics and replies are toggled from an admin area list-table:
* Make approve & not-spam links green to match comments UI
* More specifically target admin area links to avoid conflicts with other post types
* Make "Approve" a blanket "publish" action, meaning it will always publish a topic/reply even from spam or trash
* Make sure "Not Spam" will restore to "pending" if it was previously not published
* Bump CSS version
See #1799.
|
[6789]
|
johnjamesjacoby
|
Converter: Call `bbp_setup_converter()` inside of `bbp_user_maybe_convert_pass()`.
This change makes sure the admin-area converter files are included and instantiated from anywhere a user might be logging in from. This fixes a potential fatal error when trying to convert user passwords from old platforms to WordPress after a successful forum conversion has completed.
Fixes #3191.
|
[6788]
|
johnjamesjacoby
|
Converter: add filter to `bbp_new_converter()`.
This change makes it possible to include a custom converter class for the platform being converted from, especially useful if you've changed password storage schemas or want to handle data migration in a way that is specific to your needs.
See #3191.
|
[6787]
|
johnjamesjacoby
|
Links: Add `$cap` to `bbp_get_view_all` filter. See #3195.
|
[6786]
|
johnjamesjacoby
|
Stats: Whitespace adjustments to some statistics functions.
See #3196.
|
[6785]
|
johnjamesjacoby
|
Converter: remove `WP_SETUP_CONFIG` constant setting from converter process.
This introduces a helper database class to avoid directly connecting to the external database. Instead, we'll attempt to control that connection, and provide feedback to the user in the event a connection cannot be made. The `WP_SETUP_CONFIG` was causing calls to the options API to fail, resulting in broken calculations and invalid offsets.
This commit includes some general load order clean-up, which also fixes a regression causing fatal errors when attempting to upgrade converted user passwords from the old platform. It also fixes the condition where boundaries being converted would display beyond their maximums.
Fixes #3191.
|
[6784]
|
johnjamesjacoby
|
Titles: error if forum/topic/reply title is too long.
This change introduces `bbp_is_title_too_long()` and adds error messages to related forms if titles are too long.
Fixes #3189.
|
[6783]
|
johnjamesjacoby
|
Caps: Check for `$args[0]` and bail if empty.
This change avoids debug notices when single forum/topic/reply capability checks are done without having passed in a post ID.
Props espellcaste, chriscct7. Fixes #3190.
|
[6782]
|
johnjamesjacoby
|
Common: avoid debug notices in `bbp_past_edit_lock()`.
Props SergeyBiryukov. Fixes #3188.
|
[6781]
|
johnjamesjacoby
|
Activation: Use a user-option instead of user-setting or transient.
User settings won't trigger without a proper page redirect, which plugin activation does not do (yet.)
Also update docs to be less about the API and more about the intention of the code.
|
[6780]
|
johnjamesjacoby
|
Activation: improvements to activation procedure.
* Replace transient usage with a user setting. This removes 1 additional query from through-out WordPress admin.
* Use `bbp_admin()` helper function when referring to `bbpress()->admin` to take advantage of magic loading
* Move activation redirection off of general `bbp_admin_init` hook and onto the relative `activate_` hook, which reduces some useless processing - we only ever want to redirect in from a predictable user flow
* Move some admin-only functions back into the core component, to ensure they are available when bbPress is activated for the very first time
* Introduce wrapper for `bbp_create_initial_content()` to avoid action argument pollution
* Juggle some action-hook orders to make initial content creation work again
* Add more checks to current user when automatically changing or assigning roles, including keymasters on fresh installations
Overall, this results in a more predictable activation experience, and makes things easier to unhook or extend later.
|
[6779]
|
johnjamesjacoby
|
Actions: consolidate `bbp_template_notices` actions into a group.
|
[6778]
|
johnjamesjacoby
|
Template Notices: unbreak these.
This change adjusts the `bbp_template_notices` action hooks and priority to ensure user, login, and topic notices continue to appear. It also removes the unstyled and unique `updated` class on one of them, which Twenty Seventeen uses as a way to hide elements.
|
[6777]
|
johnjamesjacoby
|
General: user escaped GetText variant where no HTML is ever allowed in strings.
This change brings a few dozen strings up to par with the others, and ensures that strings are escaped on their way into the runtime environment.
|
[6776]
|
johnjamesjacoby
|
Admin: update `esc_notice()` usage to map `WP_Error` content. See r6775.
|
[6775]
|
johnjamesjacoby
|
Admin: update forum/topic/reply toggle notices to use `bbp_admin()->add_notice()`.
This changes the source hooks so notices are created earlier (and not just-in-time as toggles occur.) It also introduces an `esc_notice()` method to restrict the allowed HTML tags in notice messages down to a very finite set (completely avoiding all types of hi-jacks at a lower level.)
|
[6774]
|
johnjamesjacoby
|
Documentation: fix a bunch of random ambiguous or incomplete phpdoc.
|
[6773]
|
johnjamesjacoby
|
Admin: update some inline docs from r6772.
|
[6772]
|
johnjamesjacoby
|
Admin: enforce row-action order for forums, topics, and replies.
This change introduces a known (and filterable) sort-order to row-action keys, allowing for a more logical flow to better match Posts, Pages, and other WordPress core objects.
With slight variations, the flow is: Edit, Stick(to front), Un/approve, Open/Close, Delete/Trash, Spam, View.
Previous to this change, these `row_actions()` filters were only appending or overwriting keys, which introduced an unnecessary administration variation with no real benefit.
|
[6771]
|
johnjamesjacoby
|
Admin Notices: remove `create_function()` usage from tools feedback.
This change removes the last remaining deprecated function call for full PHP 7.2 support, while also making admin area notices a bit more flexible in the process.
Notices are now stored in an `bbpress()->admin->notices` array, and are output to the page via the `bbp_admin_notices` sub-action. This ensures that they'll only be made visible when bbPress is active, and keeps them contained to places where bbPress is already hooked in.
It was also previously possible for any user to dismiss the database upgrade notice, even if they were not capable of seeing it, so this is now fixed as well.
|
[6770]
|
johnjamesjacoby
|
Metaboxes: show non-public replies in topic-replies meta/list box.
This shows trashed/spam replies to capable users when editing a topic via WordPress admin, because if you're moderating a topic from here, chances are high you want to see everything - not just public replies.
|
[6769]
|
johnjamesjacoby
|
Metaboxes: parse arguments passed into `BBP_Topic_Replies_List_Table()` constructor.
This allows conditional filtering & overloading of what the Replies list table displays.
|
[6768]
|
johnjamesjacoby
|
Engagements: Add relationship key and type to `bbp_user_engagements_interface()`.
This allows for per-feature overloading of the engagement relationship type – useful if you want to store some data as a taxonomy, some data as meta, and other data in custom storage.
|
[6767]
|
johnjamesjacoby
|
Importers: `setup_globals()` is a public method.
This change fixes a bug with the vBulletin importer causing it not to run.
See r6766 for the vBulletin3 equivalent.
|
[6766]
|
johnjamesjacoby
|
Importers: `setup_globals()` is a public method.
This change fixes a bug with the vBulletin3 importer causing it not to run.
|
[6763]
|
johnjamesjacoby
|
Converter: add inline documentation for `wp_insert_user()`.
This change adds an inline reminder about what `wp_insert_user()` does internally, so our future selves know at a glance why else a user might be skipped.
|
[6762]
|
johnjamesjacoby
|
Options: allow default option cache strategy to be filtered, without causing an intercept.
This change brings filter behavior back that was unintentionally removed in r6751.
|
[6761]
|
johnjamesjacoby
|
Options: Use new `$intercept` value in place of old `$strategy` value.
This change fixes an undefined variable debug notice introduced in r6751.
|
[6760]
|
johnjamesjacoby
|
Common: introduce `bbp_get_url_scheme()` to simplify 'https' vs 'http' scheme concatenation.
This change improves code flow and reduces complexity by eliminating the number of inline `is_ssl()` checks necessary when URLs are being generated.
|
[6759]
|
johnjamesjacoby
|
Reset: DRY out the `bbp_admin_reset_database()` logic.
This change introduces a helper function for running queries and producing user feedback based on those results. It also introduces a `Skipped` result if the query is invalid or empty. Ultimately, this results in fewer repeated lines of code, fewer reused local variables, and an easier to understand code flow.
An old, leftover routine for removing `forum-mod` taxonomy terms was also removed, as that approach was abandoned during the 2.6 development cycle but was missed when other refactoring was done.
|
[6758]
|
johnjamesjacoby
|
Ajax: introduce `bbp_ajax_headers()` abstracted from `bbp_do_ajax()`.
This change makes it possible to send the proper & expected headers in custom theme-side AJAX implementations.
|
[6757]
|
johnjamesjacoby
|
Sub-actions: bail on completely invalid/empty get/post requests.
This change ensures that non-empty actions (sanitized via `sanitize_key()`) will not make their way into the get/post request actions.
This is in addition to similar checks added to AJAX requests in r6755.
|
[6756]
|
johnjamesjacoby
|
Inline documentation improvements from r6755.
|
[6755]
|
johnjamesjacoby
|
Ajax: send a proper `400` response when nothing happens.
This change adds nocache and noindex headers to theme-side AJAX handling, adds support for pre-sanitized `$action` parameters, and checks that the action-hook actually has actions hooked to it before attempting to execute it.
Similar to `admin-ajax.php` a `400` response is now returned when an AJAX request is attempted that does not have a handler.
|
[6754]
|
johnjamesjacoby
|
Moderation: pass `$content` into `comment_max_links_url` filter.
This changes brings parity to changes made in WordPress 4.7.0.
Fixes #3141.
|
[6753]
|
johnjamesjacoby
|
Duplicates: check `post_author` argument instead of current user.
This change brings duplicate checking up to speed with flood and blacklist checks by preferring `user_can()` over `current_user_can()`, and plays a bit more friendly with anonymous author IDs.
Props r-a-y. Fixes #3186.
|
[6752]
|
johnjamesjacoby
|
Intercept: invert comparison in `bbp_is_intercepted()`.
I was testing it to make sure it worked correctly, and forgot to switch it back before r6751.
See #3184.
|
[6751]
|
johnjamesjacoby
|
Intercept: first pass intercept API.
This change introduces 3 new functions for generating a default intercept value and comparing against it in specific places. If the return value differs from the default intercept value, we know that function call was intercepted by a filter, and that value will become the new return value without executing the remaining part of the function.
See #3184.
|
[6750]
|
johnjamesjacoby
|
Admin: split reset handler into 2 functions (handler and logic)
This change improves compatibility with future WP CLI initiatives, specifically allowing removing all bbPress data.
Fixes #3173. Props espellcaste.
|
[6747]
|
johnjamesjacoby
|
Update more engagements documentation.
Fixes #3177. Props espellcaste.
|
[6746]
|
johnjamesjacoby
|
Update engagements documentation.
Fixes #3176. Props espellcaste.
|
[6745]
|
johnjamesjacoby
|
URLs: Audit the usage of `trailingslashit()`.
This change ensures that trailing slashes are only used at the end of URLs where they're expected, and avoids adding slashes at the end of URLs when permalinks are configured not to include them.
See #3181.
|
[6744]
|
johnjamesjacoby
|
CSS cleanup from r6743.
|
[6743]
|
johnjamesjacoby
|
Styling tweaks for improved Twenty Seventeen theme support.
|
[6742]
|
johnjamesjacoby
|
Anonymous: cleanup from r6741.
|
[6741]
|
johnjamesjacoby
|
Anonymous: remove escaped placeholders from `$where` clause of duplicate check.
This change fixes a bug for versions of WordPress 4.8.3 and higher, that was causing the anonymous email comparison to use the placeholder text instead of the raw email address, but only when an email address contained a `%` character.
Also use the correct return variant, and make sure the output is escaped.
|
[6740]
|
johnjamesjacoby
|
Anonymous: remove `sanitize_comment_cookies()` call.
This was causing repeated comment cookie sanitization on each subsequent page load.
|
[6739]
|
johnjamesjacoby
|
Engagements: include `BBP_User_Engagements_Term` class, as term storage example.
This change includes an alternative storage mechanism for engagements. Meta is used by default, but using Taxonomies and Terms for storage instead may be more appealing to certain installation types.
A few related functions were updated to use newer abstractions. See #459.
|
[6738]
|
johnjamesjacoby
|
Args: pass default parameters into filters in `bbp_parse_args()`.
This change allows conditional filtering of parsed arguments based on the arguments originally passed in.
|
[6737]
|
johnjamesjacoby
|
Anonymous Users: improve styling for anonymous topic/reply author boxes.
This change wraps anonymous author data in `span` elements where `a` elements would normally be used for registered users, and tweaks the default template-pack CSS to accomodate these new elements.
|
[6736]
|
johnjamesjacoby
|
Use correct filter key in `bbp_get_author_link()`. See r6735.
|
[6735]
|
johnjamesjacoby
|
Strings: remove escaped single quotes from profile/website link attributes.
Also normalize the approach used in these 3 similar functions.
|
[6734]
|
johnjamesjacoby
|
Abstraction: abstract site switching functions to include an `is_mulitsite()` check.
This allows functions that are traditionally hook-only to be called directly, regardless of the installation type, and without littering the codebase with several `is_multisite()` switches.
Fixes #3179.
|
[6730]
|
johnjamesjacoby
|
Admin: fix filter load order for PHP 7.1 compat.
|
[6729]
|
johnjamesjacoby
|
Labels: Update post type & taxonomy labels to latest keys.
This change updates forum, topic, topic-tag, and reply labels to include all of the most recent additions to their `labels` registration arguments. It also switches to the escaped gettext variant functions to match existing standards.
|
[6728]
|
johnjamesjacoby
|
Allow a custom redirect destination in the reply form.
(Specifically for shortcode or third-party plugin usage.)
See r3450.
|
[6727]
|
johnjamesjacoby
|
Subscriptions: Avoid empty `include` statement in `bbp_get_email_addresses_from_user_ids()` call.
This change ensures that if no user IDs are gathered as part of the limited chunk, the loop will continue and avoid a costly `get_users()` call.
See r6725.
|
[6726]
|
johnjamesjacoby
|
Uncomment my debug cruft. Antiprops jjj. See r6725.
|
[6725]
|
johnjamesjacoby
|
Subscriptions: Introduce `bbp_get_email_addresses_from_user_ids()` to chunk `get_users()` calls.
This changes the strategy used when querying for subscribed users so that not of them are queried at the same time, which could cause timeouts or out-of-memory issues when there are many users subscribed to a forum or topic.
By default, users are now queried in `100` user increments, and each 100 user chunk of email addresses gets merged into 1 large array and returned. The `100` default also has a filter, so it's somewhat configurable. Duplicate email addresses are strictly avoided, and user ID filters were moved to after the current user ID is removed from the array, which allows for third party plugins to add them back in if they'd like to include them.
See #3068.
|
[6724]
|
johnjamesjacoby
|
Widgets: normalize login widget output.
This change makes sure these two forms are using the same field attributes.
|