Data cached in these caches change only at well defined places (during
need for upgrade checks, at the plugin management screen etc). So it
makes sense to use proper application caches instead of request caches.
This saves couple of database queries at almost every page in Moodle.
This is quite frequently called function at most pages. The cache needs to be
invalidated only when a new plugin is installed or existing plugin uninstalled.
However, given how moodle_needs_upgrading() checks for new plugins, we need to
purge the cache there. Which is a shame because this means that the cache gets
purged in each cron call and when the admin looks at the front page and/or
system notifications page.
Now MUC is used to cache subscription information when the constructor for an event is called, which is child of a ical subscription.
A new setting calendar_showicalsource is introduced which controls if the ical source should be displayed along with events in the calendar
Also minor changes has been done in places to make sure subscription id is always associated with ical events