Some of the changes in XF 2.1.5 include:
- Correctly handle Stripe review callbacks
- Fix issue with the +/- buttons on number box elements not working in MS Edge browser.
- Ensure the import permission helper doesn't fall over when faced with a permission value of 0.
- Update Font Awesome to 5.11 and improve support for duotone icons.
- Add "Spam" button on possible spammers when viewing reports.
- Back out of a few older iOS workarounds which seem to only be applicable to very old versions of iOS related to inputs within fixed elements in order to fix some issues these cause with iOS 13.
- Ensure favicon / title alert count indicator still displays for counts greater than 999.
- When trying to find matching transactions when processing payments, ensure we limit it to transactions from the same provider.
- Switch to a case insensitive match when analyzing an MP4 video ftyp types.
- Workaround for displaying future relative timestamps in pages output from the guest page cache.
- Changes to allow certain URLs which do not have a trailing slash to work in a more predictable way.
- Only display "Spam" buttons to visitors who have permission to use the spam cleaner.
- When fetching new Oembed data from an endpoint catch all exceptions and return the typical error output.
- Fix an issue with fixed menu positioning on Safari when scrolling.
- Prevent left/right aligned contents of spoilers from overspilling their container.
- Avoid a quirk on the deferred loading rich text editor in Firefox which may insert an empty line when content is first entered.
- Update Redis cache provider to use del function rather than delete.
- Deaccent and romanize URLs before validation
- Restore the ordering by post_date, post_id as per XF1, so that posts with identical datestamps are ordered sequentially.
- Prevent superfluous dot character being prepended to forum list category anchor links.
- Create a 'title' getter for the WarningAction entity (return \XF:hrase('warning_points:') . ' ' . $this->points
- When displaying an unfurling error in the test tool, allow the error message to wrap as needed.
- On the discouraged IP list in the Admin CP ensure that the list is properly paginated.
- Disable validation when reverting to a previous revision of content
- Check that the follow/unfollow ignore/unignore result returns something before attempting to read any associated errors
- Remove the link URL, as there is no 'edit' page for a thread reply ban so a link URL is nonsensical
- Update fa-warning to fa-exclamation-triangle in the XF Templater
- Updated the Twitter dev link in the option_explain_tweet phrase
- Ensure unfurled URLs are displayed in blocks but work nicely with floated images.
- Prevent an undefined index error in some situations when rebuilding field cache data.
- Add a further failover catch for when sites sent totally bonkers HTTP headers back to Guzzle for reasons best known to themelves....
- Added meta description/og:description/twitter:description using the metadata_macros->metadata template macro
- Use a URL friendly add-on ID when exporting languages/styles.
- Force invisible reCaptcha to be visible on the login form. Creates a minor BC break in all Captcha classes that will need to be observed by any third-party captcha providers
- Reduce number of queries on the node moderator lists with a new getFullNodeListCached method.
- Update the xf_thread_read table after a thread merge to reflect the earliest read date for each source thread for each user, so that unread posts from source threads are not marked as read when they are merged into a destination thread whose original content has itself already been read
- Implement a transaction and also fetch the last insert id on dupe
- Wrap a bunch of jobs in transactions so we don't ever find out SELECT results are invalid by the time we UPDATE them
- Implement the suggested check on is_counted from the report thread
- Wrap Throwable in ErrorException for compatibility with Symfony component
- Fix logic around user reaction scores when deleting content/changing Reaction scores
- Prevent false positive detection of duplicate key exceptions in queries due to generic SQL state code.
- Gracefully handle a race condition when inserting bookmarks.
- Make the list sorter more usable on touch devices by ensuring the page doesn't scroll when trying to drag items.
- Fix a situation where tables would not be converted to BB code correctly if there was CSS/alignment applied at the table row level.
- Move setting up XenForo's error handling to be part of startSystem rather than standardizeEnvironment to ensure that the necessary classes/functions are available before they may be called.
- Fix timestamp issues after timezone/DST changes
- When loading recently used smilies/emoji, prioritize smilies over emojis when there are conflicting shortcodes. (This may still lead to the incorrect icon being shown, but only when the conflicting emoji is inserted instead of the smilie.)
The following public templates have had changes:
As always, new releases of XenForo are free to download for all customers with active licenses, who may now grab the new version from the
Note: add-ons, customizations and styles made for XenForo 1.x are not compatible with XenForo 2.x. If your site relies upon these for essential functionality, ensure that a XenForo 2 version exists before you start to upgrade. We strongly recommend you make a backup before attempting an upgrade.
Please note that XenForo 2.1.x has higher system requirements than XenForo 1.x.
The following are minimum requirements:
- PHP 5.6 or newer (PHP 7.3 recommended)
- MySQL 5.5 and newer (Also compatible with MariaDB/Percona etc.)
- All of the official add-ons require XenForo 2.1.
- Enhanced Search requires at least Elasticsearch 2.0.
Full details of how to
If you are already running XF 2.1 or above we strongly recommend
Note that when upgrading from XenForo 1.x, all add-ons will be disabled and style customizations will not be maintained. New versions of add-ons will need to be installed and customizations will need to be redone. We strongly recommended that you make a backup before attempting an upgrade. Once upgraded, you will not be able to downgrade without restoring from a backup.