While searching for existing files if directory
separator is not correct then original files
and directories will be deleted. So use DIRECTORY_SEPARATOR.
When resetting a sequence number, we call change_database_structure()
which in turns clears the MUC cache for databasemeta. This cache contains
information about the table, columns, etc.
After the cache is cleared, it must be re-filled, and it was discovered
that the get_columns() code which fills this cache can take a particularly
long time. Given that this is called for every table in Moodle, this can
add up to a significant period, and this is done on a per-testsuite basis.
On my SSD install this was taking approximately 40 seconds on each re-fill
of the cache.
When all starting autoincrement ids are the same, it's difficult to detect coding and testing
errors that use the incorrect id in test calls. The classic case is cmid vs instance id.
To reduce the chance of the coding error we start sequences at different values where possible.
OUBlog installation is the case that highlighted this as it inserts a sitewide course module
at install time and cmid <> instance id in most cases.
Last commit switched from raw arrays to associative
arrays. That leads to json_encode() to generate an
object instead of an array, ultimately leading to
problems with the rest of code expecting an array.
By using array_values() we are moving back to the
non-associative array.
Also, fix some file permissions.
The improvements include:
* HTMLPurifier cache is stored in localcachedir
* allowobjectembed changes are not ignored any more
* the cache keys include revision and all options which makes
this suitable for local caches on cluster nodes
* unchanged test is replaced by "true" value which should
significantly improve performance
* removal of purge_all_caches() hack for directory recreation
* comments and coding style cleanup