Fixes#357.
There was an infinite loop that occurred when attempting to impersonate users as a user that had the backend.impersonate_users permission but was not themselves a super user. This was caused because BackendAuth::getImpersonator() returned a separate user instance than the current user being evaluated despite the underlying DB row being the same.
Fixes issue where attempting to load a static theme without a database present would fail because the AssetMaker trait was attempting to get the system build information from the database even though the DB wasn't present.
When removing a plugin via CLI or rolling back all DB migrations, we will now require the user to type out the plugin name (or "DELETE" for "winter:down") as a confirmation in order to proceed. This ensures that the user is well aware of what they are doing.
The "plugin:remove" command has now been added a "--no-rollback" option. When used, the plugin files will be removed, but the DB will remain untouched, allowing people to remove a plugin without losing their data.
Refs: https://github.com/wintercms/wn-translate-plugin/issues/13#issuecomment-988364253
Fixes#350. Refs https://github.com/laravel/framework/pull/38724. Final solution in v1.2 will be to extend the base Laravel Cache serviceprovider and make it no longer a deferred provider as well as consolidating the MemoryCache implementations currently present in QueryBuilder, Halcyon Models, and the Halcyon ServiceProvider into the Winter Cache service provider.
These values have always traditionally been strings, but some custom implementations use integers (eg. for ID selections) which did not work previously.
This coerces both the selected items and available items to strings for comparison, which should allow integers to be used.
Fixes https://github.com/wintercms/winter/issues/351
To allow more flexibility of where we can put handler methods for dynamic properties in the Inspector, we should try and call the given class' constructor with whatever required parameters it needs. The current implementation assumes that one argument will be provided to any given property class (with the value given being null). Ideally, we should make these methods static and have a look at this more thoroughly later, but this is a useful compromise for now.