private function doFindMultipleComponents($directoryWithinPlugin, $expectedSubclass)
{
$components = array();
$baseDir = PIWIK_INCLUDE_PATH . '/plugins/' . $this->pluginName . '/' . $directoryWithinPlugin;
$files = Filesystem::globr($baseDir, '*.php');
foreach ($files as $file) {
require_once $file;
$fileName = str_replace(array($baseDir . '/', '.php'), '', $file);
$klassName = sprintf('Piwik\\Plugins\\%s\\%s\\%s', $this->pluginName, str_replace('/', '\\', $directoryWithinPlugin), str_replace('/', '\\', $fileName));
if (!class_exists($klassName)) {
continue;
}
if (!empty($expectedSubclass) && !is_subclass_of($klassName, $expectedSubclass)) {
continue;
}
$klass = new \ReflectionClass($klassName);
if ($klass->isAbstract()) {
continue;
}
$components[$file] = $klassName;
}
return $components;
}