diff --git a/CHANGELOG.md b/CHANGELOG.md index f9066f2db..b6f3c13b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * Fixed clockwork error when clearing cache * Fixed missing method `translated()` in `Flex Pages` * Fixed missing `Flex Pages` in site if multi-language support has been enabled + * Fixed Grav using blueprints and form fields from disabled plugins # v1.7.7 ## 02/23/2021 diff --git a/system/src/Grav/Common/Plugins.php b/system/src/Grav/Common/Plugins.php index f1d7b8e66..4e0afea30 100644 --- a/system/src/Grav/Common/Plugins.php +++ b/system/src/Grav/Common/Plugins.php @@ -68,13 +68,21 @@ class Plugins extends Iterator $blueprints = []; $formFields = []; + $grav = Grav::instance(); + + /** @var Config $config */ + $config = $grav['config']; + /** @var Plugin $plugin */ foreach ($this->items as $plugin) { - if (isset($plugin->features['blueprints'])) { - $blueprints["plugin://{$plugin->name}/blueprints"] = $plugin->features['blueprints']; - } - if (method_exists($plugin, 'getFormFieldTypes')) { - $formFields[get_class($plugin)] = isset($plugin->features['formfields']) ? $plugin->features['formfields'] : 0; + // Setup only enabled plugins. + if ($config["plugins.{$plugin->name}.enabled"] && $plugin instanceof Plugin) { + if (isset($plugin->features['blueprints'])) { + $blueprints["plugin://{$plugin->name}/blueprints"] = $plugin->features['blueprints']; + } + if (method_exists($plugin, 'getFormFieldTypes')) { + $formFields[get_class($plugin)] = $plugin->features['formfields'] ?? 0; + } } } @@ -83,7 +91,7 @@ class Plugins extends Iterator arsort($blueprints, SORT_NUMERIC); /** @var UniformResourceLocator $locator */ - $locator = Grav::instance()['locator']; + $locator = $grav['locator']; $locator->addPath('blueprints', '', array_keys($blueprints), ['system', 'blueprints']); }