diff --git a/modules/system/ServiceProvider.php b/modules/system/ServiceProvider.php index d10e42c8e..c96b536ff 100644 --- a/modules/system/ServiceProvider.php +++ b/modules/system/ServiceProvider.php @@ -14,6 +14,7 @@ use System\Classes\ErrorHandler; use System\Classes\MarkupManager; use System\Classes\PluginManager; use System\Classes\SettingsManager; +use System\Classes\UpdateManager; use System\Twig\Engine as TwigEngine; use System\Twig\Loader as TwigLoader; use System\Twig\Extension as TwigExtension; @@ -208,6 +209,11 @@ class ServiceProvider extends ModuleServiceProvider * Allow plugins to use the scheduler */ Event::listen('console.schedule', function ($schedule) { + // Fix initial system migration with plugins that use settings for scheduling - see #3208 + if (App::hasDatabase() && !Schema::hasTable(UpdateManager::instance()->getMigrationTableName())) { + return; + } + $plugins = PluginManager::instance()->getPlugins(); foreach ($plugins as $plugin) { if (method_exists($plugin, 'registerSchedule')) { diff --git a/modules/system/classes/UpdateManager.php b/modules/system/classes/UpdateManager.php index 006aadcfd..8d4b43419 100644 --- a/modules/system/classes/UpdateManager.php +++ b/modules/system/classes/UpdateManager.php @@ -1002,11 +1002,10 @@ class UpdateManager return base64_encode(hash_hmac('sha512', http_build_query($data, '', '&'), base64_decode($secret), true)); } - // - // Internals - // - - protected function getMigrationTableName() + /** + * @return string + */ + public function getMigrationTableName() { return Config::get('database.migrations', 'migrations'); }