/** * Returns all content classnames found in $directory. * * @param string $directory The directory to look at. * * @return string[] An array of content classnames found in directory. */ public static function getClassContentClassnamesFromDir($directory) { if (!is_dir($directory)) { return []; } return array_map(function ($path) use($directory) { return str_replace([DIRECTORY_SEPARATOR, '\\\\'], [NAMESPACE_SEPARATOR, NAMESPACE_SEPARATOR], AbstractClassContent::CLASSCONTENT_BASE_NAMESPACE . str_replace([$directory, '.yml'], ['', ''], $path)); }, File::getFilesRecursivelyByExtension($directory, 'yml')); }
/** * Returns classnames of all classcontents element * * @return array Contains every BackBee's element classcontent classnames */ public function getAllElementClassContentClassnames() { $directory = $this->application->getBBDir() . DIRECTORY_SEPARATOR . 'ClassContent'; $classnames = array_map(function ($path) use($directory) { return str_replace([DIRECTORY_SEPARATOR, '\\\\'], [NAMESPACE_SEPARATOR, NAMESPACE_SEPARATOR], AbstractClassContent::CLASSCONTENT_BASE_NAMESPACE . str_replace([$directory, '.yml'], ['', ''], $path)); }, File::getFilesRecursivelyByExtension($directory, 'yml')); $classnames[] = AbstractClassContent::CLASSCONTENT_BASE_NAMESPACE . 'ContentSet'; return $classnames; }
public function testGetFilesRecursivelyByExtension() { $this->assertEquals([$this->folderPath . DIRECTORY_SEPARATOR . 'bar.txt', $this->folderPath . DIRECTORY_SEPARATOR . 'foo.txt'], File::getFilesRecursivelyByExtension($this->folderPath, 'txt')); $this->assertEquals([$this->folderPath . DIRECTORY_SEPARATOR . 'baz.php'], File::getFilesRecursivelyByExtension($this->folderPath, 'php')); $this->assertEquals([$this->folderPath . DIRECTORY_SEPARATOR . 'backbee.yml'], File::getFilesRecursivelyByExtension($this->folderPath, 'yml')); $this->assertEquals([$this->folderPath . DIRECTORY_SEPARATOR . 'noextension'], File::getFilesRecursivelyByExtension($this->folderPath, '')); $this->assertEquals([], File::getFilesRecursivelyByExtension($this->folderPath, 'aaa')); }
/** * Parse classcontent directories and hydrate categories attribute. * * @param array $directories classcontent directories */ private function loadCategoriesFromClassContentDirectories($directories) { $classcontents = []; foreach ($directories as $directory) { $classcontents = array_merge($classcontents, array_map(function ($path) use($directory) { return str_replace([DIRECTORY_SEPARATOR, '\\\\'], [NAMESPACE_SEPARATOR, NAMESPACE_SEPARATOR], AbstractContent::CLASSCONTENT_BASE_NAMESPACE . str_replace([$directory, '.yml'], ['', ''], $path)); }, File::getFilesRecursivelyByExtension($directory, 'yml'))); } foreach ($classcontents as $class) { try { if (class_exists($class)) { $this->buildCategoryFromClassContent(new $class()); } } catch (ClassNotFoundException $e) { // nothing to do } } }