This patch makes Moodle call HTTP HEAD method via cURL to see if the ZIP
is expected to be downloadable by mdeploy.php. This is mainly intended
for SSL certificates check.
This was reported in forums as an usability issue. This icon is used
across Moodle as an active link to hide or show things - not as a status
icon. People were trying to disable plugins by clicking the icon. Until
there is a full support for doing this from the Plugins overview page,
it is better to remove the icons completely.
The Notifications (admin/index.php) page has now information about
available updates for core and eventually plugins, too. Note that the
structure of the available updates array changed. This breaks backward
compatibility for eventual 3rd renderers out there (not expected
though).
Previously, it was the renderer method that actually called
all_plugins_ok(). I believe that renderer methods should not be
responsible for such an important step in the install/upgrade code flow.
So dependencies are now checked by admin/index.php on upgrade, too.
This follows the same path as we have in CLI installers. Plugin
dependencies are checked right after the environment checks and the
install can't continue unless all dependencies are fixed.
Now the message 'Your Moodle code is up-to-date!' is displayed only if
the fetch was done within the last hour. Otherwise, just the button
'Check for available updates' is displayed.
We are displaying available updates for installed plugins only. It was
decided (by me and Eloy) that we will not display info about available
Moodle update during the upgrade. It seems to be redundant as the admin
just uploaded a new version of Moodle so they probably chose what they
wanted.
In case of Moodle code itself, there is no plugin_manager like class
available so the checker class itself must be aware of versions and
actually do the checks. On the other hand, we can always rely that
version, release and maturity are always returned by the remote server.
These changes are motivated by feedback from Tim Hunt (17 October 2011
in the developers chat room). The combination of using an interface, but
then putting all the useful information in public fields, was not good
design of this library. So I am merging the plugin_information interface
and the plugintype_base class into a new abstract class plugininfo_base.
This new class defines the basic API of all information holding
subclasses. This does not change the code, just puts the documentation
closer to the methods they are actually implemented.