diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/Plugin.php | 20 | ||||
-rw-r--r-- | core/Plugin/MetadataLoader.php | 7 |
2 files changed, 27 insertions, 0 deletions
diff --git a/core/Plugin.php b/core/Plugin.php index 03db5df17c..79fca9a02b 100644 --- a/core/Plugin.php +++ b/core/Plugin.php @@ -55,6 +55,26 @@ class Plugin $metadataLoader = new MetadataLoader($pluginName); $this->pluginInformation = $metadataLoader->load(); + + if ($this->hasDefinedPluginInformationInPluginClass() && $metadataLoader->hasPluginJson()) { + throw new \Exception('Plugin ' . $pluginName . ' has defined the method getInformation() and as well as having a plugin.json file. Please delete the getInformation() method from the plugin class.'); + } + } + + private function hasDefinedPluginInformationInPluginClass() + { + $myClassName = get_class(); + $pluginClassName = get_class($this); + + if ($pluginClassName == $myClassName) { + // plugin has not defined its own class + return false; + } + + $foo = new \ReflectionMethod(get_class($this), 'getInformation'); + $declaringClass = $foo->getDeclaringClass()->getName(); + + return $declaringClass != $myClassName; } /** diff --git a/core/Plugin/MetadataLoader.php b/core/Plugin/MetadataLoader.php index 60d31f895e..94d5a65cc1 100644 --- a/core/Plugin/MetadataLoader.php +++ b/core/Plugin/MetadataLoader.php @@ -58,6 +58,13 @@ class MetadataLoader ); } + public function hasPluginJson() + { + $hasJson = $this->loadPluginInfoJson(); + + return !empty($hasJson); + } + private function getDefaultPluginInformation() { $descriptionKey = $this->pluginName . '_PluginDescription'; |