Improved performance, WAV to MP3 transcoding and lots of other improvements

Today's update (4bbbf6f) brings with it the following changes:

Performance improvements

  • Rewritten most of the database functions related to filesystem tree traversal. Should almost double performance in a lot of situations, allowing for most page loads to be faster. Several redundant functions were removed or inlined to make everything faster.
  • Container sort key is now consistently stored in the database, allowing for some performance improvements.
  • The permission-checking database functions were also rewritten, giving almost a 10 times performance improvement in most situations.
  • When navigating to the root level in the file manager, it was not uncommon to get a timeout. This should now be fixed. Now the root level takes about 10-20 seconds to render. Not optimal, but within the timeout threshold. It is no longer possible to list the root level with all user's home containers.

New features

  • Wave audio files which are recorded or uploaded are now automatically converted to MP3 to save backend storage space. Because of the smaller size they should also download faster to clients.
  • Automatic playback of next audio object when one has finished playback is now possible by customizing page templates.
  • Video playback now logs playback duration to Google Analytics, allowing for calculation of royalty payments on video files as well as audio files.

Enhancements

  • The validation logic in the file manager was rewritten as part of the tree-traversal performance improvement. It should now be more consistent and faster. There is one behavior difference to the old implementation. The containers and objects are returned from the validator in no specific order, so adding them to a course would not yield a traversal-specific order. It is therefore recommended to only use it to add aux. objects using this method.
  • The element_favicon template is now overridable.
  • A new favorite/bookmark icon was added. Now Portfolio has a slightly better design profile. Bookmark icons should now be available in larger sizes.
  • When you're editing an object it is now possible to see which courses it is part of, regardless of course permissions.
  • Improve HTML markup error message to take into account if you're using WYSIWYG editor or not.
  • The json, xml and view request handlers are now documented.

Bugfixes

  • Avoid using NPAPI plugins to render video in browsers where these are no longer allowed. Affecting Microsoft Edge, Firefox v52 and above and Chrome v45 and above.
  • All timestamps should now be stored with time zone information, hopefully fixing most timestamp offset issues.
  • Audio file autoplay is always disabled on mobile devices because most mobile devices don't allow it without clicking first.
  • The get_containers() method on course instances was renamed to get_container_ids().
  • Only complete user-interface languages are now used to autoselect a language based on browser preference.
  • Fixed missing translations in TinyMCE if using Portuguese language.

Feature removals / deprecations

  • Removed several database functions, tables and views which are no longer in use.
  • Removed a duplicate database index, slightly improving performance.
Spinner

Login