/**
  * 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;
 }
Example #3
0
 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'));
 }
Example #4
0
 /**
  * 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
         }
     }
 }