diff --git a/PHPCI/Plugin/Util/FilesPluginInformation.php b/PHPCI/Plugin/Util/FilesPluginInformation.php index 8366c4cb..5465f470 100644 --- a/PHPCI/Plugin/Util/FilesPluginInformation.php +++ b/PHPCI/Plugin/Util/FilesPluginInformation.php @@ -67,7 +67,7 @@ class FilesPluginInformation implements InstalledPluginInformation $this->pluginInfo = array(); foreach ($this->files as $fileInfo) { if ($fileInfo instanceof \SplFileInfo) { - if ($fileInfo->isFile()) { + if ($fileInfo->isFile() && $fileInfo->getExtension()=='php') { $this->addPluginFromFile($fileInfo); } } @@ -76,13 +76,17 @@ class FilesPluginInformation implements InstalledPluginInformation protected function addPluginFromFile(\SplFileInfo $fileInfo) { - $newPlugin = new \stdClass(); - $newPlugin->class = $this->getFullClassFromFile($fileInfo); - $newPlugin->source = "core"; - $parts = explode('\\', $newPlugin->class); - $newPlugin->name = end($parts); + $class = $this->getFullClassFromFile($fileInfo); - $this->pluginInfo[] = $newPlugin; + if (!is_null($class)) { + $newPlugin = new \stdClass(); + $newPlugin->class = $class; + $newPlugin->source = "core"; + $parts = explode('\\', $newPlugin->class); + $newPlugin->name = end($parts); + + $this->pluginInfo[] = $newPlugin; + } } protected function getFullClassFromFile(\SplFileInfo $fileInfo) @@ -90,15 +94,20 @@ class FilesPluginInformation implements InstalledPluginInformation //TODO: Something less horrible than a regular expression // on the contents of a file $contents = file_get_contents($fileInfo->getRealPath()); - $matches = array(); + preg_match('#class +([A-Za-z]+) +implements#i', $contents, $matches); - $className = $matches[1]; - $matches = array(); - preg_match('#namespace +([A-Za-z\\\\]+);#i', $contents, $matches); - $namespace = $matches[1]; - - return $namespace . '\\' . $className; + if (isset($matches[1])) { + $className = $matches[1]; + + $matches = array(); + preg_match('#namespace +([A-Za-z\\\\]+);#i', $contents, $matches); + $namespace = $matches[1]; + + return $namespace . '\\' . $className; + } else { + return null; + } } }