From e8ba7fef5b22f4e02d12bcd608c1742133b68835 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 10 Dec 2016 10:59:45 +1100 Subject: [PATCH] Plugin dependency definitions no longer case sensitive Dependency checking is disabled for the front end to increase performance --- modules/system/classes/PluginManager.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/system/classes/PluginManager.php b/modules/system/classes/PluginManager.php index 24c362461..d626755f1 100644 --- a/modules/system/classes/PluginManager.php +++ b/modules/system/classes/PluginManager.php @@ -74,7 +74,10 @@ class PluginManager $this->metaFile = storage_path('cms/disabled.json'); $this->loadDisabled(); $this->loadPlugins(); - $this->loadDependencies(); + + if ($this->app->runningInBackend()) { + $this->loadDependencies(); + } } /** @@ -311,6 +314,7 @@ class PluginManager } $classId = $this->getIdentifier($namespace); + return $this->plugins[$classId]; } @@ -336,6 +340,7 @@ class PluginManager public function hasPlugin($namespace) { $classId = $this->getIdentifier($namespace); + return isset($this->plugins[$classId]); } @@ -390,7 +395,7 @@ class PluginManager } /** - * Returns a plugin identifier from a Plugin class name or object + * Resolves a plugin identifier from a plugin class name or object. * @param mixed Plugin class name or object * @return string Identifier in format of Vendor.Plugin */ @@ -488,9 +493,11 @@ class PluginManager public function isDisabled($id) { $code = $this->getIdentifier($id); + if (array_key_exists($code, $this->disabledPlugins)) { return true; } + return false; } @@ -499,8 +506,7 @@ class PluginManager */ protected function writeDisabled() { - $path = $this->metaFile; - File::put($path, json_encode($this->disabledPlugins)); + File::put($this->metaFile, json_encode($this->disabledPlugins)); } /** @@ -595,11 +601,12 @@ class PluginManager } $disable = false; + foreach ($required as $require) { - if (!$this->hasPlugin($require)) { + if (!$pluginObj = $this->findByIdentifier($require)) { $disable = true; } - elseif (($pluginObj = $this->findByIdentifier($require)) && $pluginObj->disabled) { + elseif ($pluginObj->disabled) { $disable = true; } }