Merge branch 'master' into next
[GitHub/WoltLab/WCF.git] / CHANGELOG.md
1 # Changelog
2
3 ## 2.2 (Vortex)
4
5 ### 2.2.0 Alpha 1 (XXXX-YY-ZZ)
6
7 * Clipboard support for tags in ACP ("delete" and "set as synonyms").
8 * `wcf\data\user\UserProfileCache` for caching user profiles during runtime.
9 * `wcf\system\cache\builder\EventListenerCacheBuilder` returns `wcf\data\event\listener\EventListener` objects instead of data arrays.
10 * `wcf\system\cache\source\RedisCacheSource` added.
11 * Background queue (`wcf\system\background\*`) added.
12 * Rewritten email system (`wcf\system\email\*`) added.
13 * CryptoUtil (`wcf\util\CryptoUtil`) added.
14 * Old email system (`wcf\system\mail\*`) deprecated.
15 * Abstract bulk processing system added.
16 * Replaced old user bulk processing with new implementation using the abstract bulk processing system.
17 * `conditionContainers` template event in template `noticeAdd.tpl` added.
18 * Use condition system for user search.
19 * Image proxy for images included with the image BBCode.
20 * Overhauled Redactor integration
21 * Linebreaks mode instead of using paragraphs, works better with the PHP-side parser which works with linebreaks
22 * Ported the PHP-BBCode parser, massively improves accuracy and ensures validity
23 * Show error message if poll options are given but not question instead of discarding poll options.
24 * `parentObjectID` column added to `modification_log` and `wcf\system\log\modification\AbstractModificationLogHandler` introduced as a replacement for `wcf\system\log\modification\ModificationLogHandler`.
25 * Add sort support for `useroptions` option type.
26 * Make user options shown in sidebar sortable.
27 * `wcf\system\event\listener\AbstractUserActionRenameListener` added.
28 * `wcf\system\event\listener\AbstractUserMergeListener` added.
29 * Notice texts support `{$username}` and `{$email}` placeholders.
30 * Notifications for comments in moderation.
31 * Continuous numeration of edit history version in template.
32 * `\wcf\data\user\UserProfile::getGuestUserProfile()` added.
33 * Make labels sortable in ACP.
34
35 #### CMS
36
37 * User online location is handled via the `wcf\data\page\Page` objects. Static locations only need a language item `wcf.page.onlineLocation.{$page->identifier}`, more complex locations can use the online location-related methods of `wcf\system\page\handler\IMenuPageHandler`. For CMS pages, their title is used.
38
39 #### New Traits
40
41 * `wcf\data\TDatabaseObjectOptions` for database object-bound options validation.
42 * `wcf\data\TDatabaseObjectPermissions` for database object-bound permissions validation.
43 * `wcf\data\TMultiCategoryObject` provides category-related methods for objects with multiple categories.
44 * `wcf\data\TUserContent` provides default implementations of the (non-inherited) methods of the IUserContent interface.
45
46 #### Package Installation Plugin Improvements
47
48 * instruction file name for most PIPs has default value provided by `wcf\system\package\plugin\IPackageInstallationPlugin::getDefaultFilename()`.
49 * `options` support for cronjob PIP.
50 * `name` attribute for cronjob PIP (`cronjobName` for cronjob objects).
51 * `eventName` of event listener PIP supports multiple events.
52 * `permissions` and `options` support for event listener PIP.
53 * `name` attribute for event listener PIP (`listenerName` for event listener objects).
54 * `permissions` and `options` support for template listener PIP.
55 * file `{WCF_DIR}/acp/uninstall/{packageName}.php` is automatically executed if package is uninstalled right before the first file PIP is executed
56
57 #### Removed Code
58
59 * `wcf\system\clipboard\action\UserExtendedClipboardAction` removed.
60 * `wcf\system\event\listener\PreParserAtUserListener` removed.
61 * `wcf\action\AJAXProxyAction::getData()` removed.
62 * Version system removed.
63 * Support for query string based sessions in Frontend removed.
64 * Language server system removed.
65
66 #### Documentation
67
68 * `@property-read` tags for database table columns of classes extending `wcf\data\DatabaseObject`.