Elgg 2.2.0 RC1 is released

Elgg 2.2.0 RC1 is released and is available for early testers. Elgg core team decided to make this pre-release due to a large number of new features that have been added to core, and we want to ensure that developers and site owners are given enough time to hunt down and eliminate any potential issues.

Elgg 2.2.0 comes with a number of exciting new features:

  • New flexible API for handling entity icons
  • Improved AMD modules for several UI components
  • Ajax API improvements (incl. automatic loading of required modules)
  • Dev usability improvements in widgets API
  • A number of new tests, bug fixes and other nifty features


  • Ismayil Khayredinov (43)
  • Steve Clay (37)
  • Jeroen Dalsem (22)
  • jdalsem (6)
  • Wouter van Os (2)
  • Brett Profitt (1)
  • Jerôme Bakker (1)
  • V. Lehkonen (1)
  • lehkonev (1)


  • ajax:
    • better elgg/Ajax handling of form data and URLs (8795b9f4, closes #9534#9564)
    • Ajax service now loads required AMD modules (292dc391)
  • avatar: user avatars are now served by serve-file handler (a55d746a)
  • cache:
    • allow admin to attempt an automatic symlink to cache (b06a1cb3, closes #8639#8638)
    • allows specifying cache directory in settings.php (4b2ed514)
  • ckeditor:
    • improved elgg/ckeditor AMD module (a0ff70ec)
    • added editor autogrow plugin (771abac8)
    • allowed resizing of editor window (f43a6565)
  • core:
    • added a CONFIG flag to control auto-disabling plugins (17363a50)
    • added a new function to check if system_cache is enabled (f3bbff32)
  • cron: improved cron logging (5305b60d, closes #9474)
  • db:
    • access sql parts are named in the clauses array (50ffcf24)
    • allows using parameterized queries in core DB functions (a9e51682)
  • developers: add view_vars hook to views inspector (41e9e1ef)
  • discussions:
    • added a site menu item for discussion/all (79809b78)
    • allow plugins to use custom discussion reply object class (ac55f8f4)
  • embed:
  • entities: adds user capabilities service (81f05058)
  • file:
    • adds ElggFile::transfer() for reliable renaming of files (bf50c5d0)
    • more consistency in mime and simple type values (3e09fa15, closes #9614)
  • files: update file plugin to new file serving API (a9d409ee)
  • filestore:
    • bootstrap default filestore early in the boot sequence (c85fa0ee, closes #9873)
    • adds API to reliably set file modification time (476b6d29)
  • forms:
    • Add new user now has an option to autogenerate the password (ee4758d3)
    • input/checkbox is now usable with elgg_view_input() (82bbf49b, closes #9808)
  • gatekeeper: entity gatekeeper result can now be filtered (75af2fd5)
  • groups:
    • group icons are now handled by the new icon service (e809f5fd)
    • introduced a hook to influence group tool options (b6617e5e)
    • allow the group river to be filtered by content type (0d8f9364)
    • group avatars now use serve-file handler (ac57e990)
  • html:
    • allows cleaner elgg_format_element usage (425f57d7, closes #9766)
    • moves favicon registration to a hook (a4a35362)
  • http: allow use of X-Sendfile/X-Accel web server feature (a88db207, closes #4898)
  • icons:
    • udpate file plugin to use new icon service (2c9f5c0a)
    • user avatars are now handled by the icon service (36c8b465)
    • adds a service for handling entity icons (72b8a2c7)
  • js:
    • Adds hooks to pass site and page-level data client-side (cec6b42b, closes #8997)
    • elgg/Ajax users get more access to underlying resources (39a3fbce, closes #9767)
    • elgg/spinner now supports optional text to be displayed (da5c5b06)
    • adds elgg/lightbox AMD module, loaded on all pages (9135ad26, closes #7895#8309#6991)
    • user hover menu now uses elgg/popup module (d0dffca6)
    • adds elgg/popup AMD module (fd75da60)
    • requiresConfirmation now returns false if not confirmed (cac5c0fd)
  • menus:
    • elgg_register_title_button() can now check entity type and subtype (a0c118ad)
    • required AMD modules can now be defined at item registration (46c3ead8)
    • adds menu service for more orderly menu construction (38ecfc6b, closes #9508)
  • reportedcontent: only load javascript when needed (29c39cd7)
  • river: convert river JS to AMD modules (790a1a00)
  • thewire: allow multiple add forms to exist on the same page (9f72e287)
  • ui: Allows modifying system messages/errors (eee183c5)
  • views:
    • view_vars handlers can preset view output (68fde7b6)
    • elgg_get_excerpt output now comes from a view (4d6ec3f2)
    • allows changing relative URLs in CSS files (70d3aab7)
    • allow multiple paths in views.php files (7672d754)
  • web_services: allows API function to be given an associative array (cd80863a, closes #9411)
  • widgets:
    • widget types can now be extended with a hook (3c76194c)
    • widget title and description can be autodetected (3c61e2f0)
    • added a helper class and factory for defining widgets (bc56fafd)
    • widget layout owner can now be set explicitly (b3bd2a84, closes #7023)
    • added isset on \ElggWidget objects to check settings (7b095208)
    • added unset on \ElggWidget objects to remove settings (f99e4f5d)


  • db: improved session write db query for InnoDB (3b55226d)
  • reportedcontent: only load JS if menu item is rendered (ececa98d)


  • core: fixes docs for ElggFilestore::seek return value (fe310c31)
  • faqs: fixed typo in IDE section (a1ed1305)
  • tutorials: updated Hello world (dc5a4ade, closes #9875)
  • widgets: updated the widget registration documentation (3410e1ec)

Bug Fixes

  • avatars: avatars are no longer served with public URLs in a walled garden mode (4c8a7ced)
  • core:
    • get class from subclass instead of base (8b3e17fa)
    • allows ElggFile to append files not yet existing (ac0ba3f2)
  • file: ElggFile::delete() now removes target files if filename is a symlink (facc13fe)
  • files: use actual file modification time as an etag value (17c5dcaf)
  • js: ui bindings now wait for system init event to fire (5794e027)
  • mime: fall back to detection based on extension for octet-stream (0b1f4539)
  • reportedcontent: forward to address if not submitted in lightbox (ee63b1d8)
  • views: elgg_view_form now accepts class to be an array in form_vars (4133b516)


  • db: deprecates many methods on the Application::getDb object (2ba9a876)
  • entities:
    • adds entityCache service and deprecates old global (9fa45b62)
    • deprecate can_write_to_container (ee473b37)
  • file: new file service deprecates file download and thumbnail handlers (90925fab)
  • groups:
    • groups/js view deprecated by groups/navigation AMD module (975014bb)
    • new file service deprecated avatar/view resource (5c535271)
    • new file service deprecated groupicon page handler (0721023b)
  • great job guys,

    Thanks for new features and so complete announcements!

  • Thanks, looking great

    Tried to update via composer as usual, but for some reason bundeled plugins didn't get updated, or at least the likes plugin didn't.
    When I look on the server, the entity preloader there is still using the removed '_elgg_retrieve_cached_entity()' function, while when I look in the github package, the function is indeed replaced in the entity preloader.

    Am I doing something wrong?

  • It will be great if 2.2.0 filter is added to https://elgg.org/plugins

  • Great! Pls am running elgg 1.8.20 and I need to upgrade to 2.2 how do I go about it?

  • this version of elgg (2.2) is a release candidate and is not ready for production use. the level to upgrade to presently (unless you are testing the release candidate for 2.2) is 2.1.2. the process for upgrading is clearly written in the documentation that comes with elgg and also described in the community here in numerous threads already.

  • group icons are now handled by the new icon service 

    introduced a hook to influence group tool options

    allow the group river to be filtered by content type

    group avatars now use serve-file handler

Latest comments