This change implements an improved "set build" utility through the "october:version" Artisan command that, instead of checking the October CMS server for the latest build, checks the module files against a source manifest kept on GitHub.
This check allows us to accurately determine the build based on the module files in the October CMS installation, and can even detect versions if the module files are modified (except in the cases of extreme modification).
An additional utility has been implemented, "october:manifest", which will build the manifest JSON file in order to provide the maintainers with a way of generating this manifest file as required.
Replaces #4615.
This has been benchmarked and appears to have minimal impact on performance and solves unnecessary randomness and race conditions during the app's registration and boot cycle
Fixes#4826
There is an unfortunate workflow issue when updating from Build 419 -> Build 420 via the back-end, which seems unavoidable. The first update will fail because there is some logic that occurs after the core zip is extracted, this results in a half 5.1 / half 5.5 version of the app running and it chokes. Refreshing the page and performing the update again fixes it.
* Make sure Project ID is always included in POST
Attempting to install a paid plugin through Artisan would return an 'authority not found' error, when the same would work fine when clicking "Update" in the backend.
This moves the code that adds the project ID into the applyHttpAttributes method to ensure it gets added for all post requests, and not just those that are actually requesting a file.
* Remove projectId from requestUpdateList method
After moving the other setter to the applyHttpAttributes method,
this one is no longer necessary as the apply method is called from
the closure inside $this->requestServerData.
This will ensure strict mode is not applied while running migrations
for both modules and plugins, either when installing or removing.
We don't need to call disableStrictMode from UpdateManager::uninstall()
as it is called within the plugin removal methods, which are run first.
To force strict mode to be enabled, set 'strict' => true in the database config.