This commit is part of work on Custom fields API,
to minimize commit history in moodle core the work of a team of developers was split
into several commits with different authors but the authorship of individual
lines of code may be different from the commit author.
These components have no classes and no strings and have no purspose. Component core_hub is responsible
for storing data, defining classes and strings for site registration and course publishing
This also reverts MDL-61945
The previously used minification libraries were:
a) Unmaintained
b) Had some silly licensing issues (MDL-36457)
The new library is smaller, maintained, active and GPL-compatible.
No changes from the upstream version have been made, it is recommended by
upstream to install these depdencies via composer - but the composer
installation is bundled with a load of test files, shell scripts etc (and
we don't use composer to manage 'production dependencies') so we have to
do it manually.
Do not attempt to read an unreadable directory because previously the generated
errors were hard to fathom.
Thanks to James McQuillan for the basis of the patch.
I've added a better means of renaming classes for autoloading and
handling the deprecation of the original class name.
This system records renamed classes in db/renamedclasses.php and
when a renamed class is requested a debugging notice is printed
and a class alias is created so that the calling code both works
and is informed of the deprecation.
The old conditionlib.php, which is replaced by the new availability
API, has been deprecated.
* Code which uses the key functions (is_available,
get_full_information) should still work. These now show
deprecated warnings and then pass through to equivalents in the
new API.
* I have created new unit tests for these functions.
* The old language file has been removed (reused strings already
moved with AMOS).
* Most other functions throw exceptions because it was impossible
(due to fundamental API differences) or difficult to reimplement.
* I don't really expect that non-core code (outside unit tests) will
have used any of the other functions.
This commit defines the new /availability root folder, with
/availability/classes, /availability/tests, and
/availability/condition where the condition plugins will live.
Condition plugin prefix is availability_, e.g. availability_date.
Rationale for this organisation:
1. I was originally going to put this in /lib/availability but
it has been pointed out that putting even more junk in lib
is probably bad.
2. 'availability' and 'condition' are the two names used in code
to refer to this system ($CFG->enableavailability).
3. The prefix has to be short enough to allow database tables
(although in practice I assume that condition plugins will not
normally contain database tables).
The new API includes a Boolean tree structure that controls the
availability of an item.
AMOS BEGIN
CPY [availabilityconditions,core_condition],[restrictaccess,core_availability]
CPY [enableavailability,core_condition],[enableavailability,core_availability]
CPY [configenableavailability,core_condition],[enableavailability_desc,core_availability]
AMOS END