コード例 #1
0
ファイル: ElementFinder.php プロジェクト: activecollab/shade
 /**
  * @param Project $project
  */
 function __construct(Project &$project)
 {
     $this->project = $project;
     $this->finders = ['findBookDirs' => function ($books_path) {
         $dirs = [];
         if (is_dir($books_path)) {
             foreach (new DirectoryIterator($books_path) as $dir) {
                 if (!$dir->isDot() && $dir->isDir()) {
                     $dirs[] = $dir->getPathname();
                 }
             }
         }
         return $dirs;
     }, 'findBookPageFiles' => function ($pages_path) {
         $files = [];
         if (is_dir($pages_path)) {
             foreach (new DirectoryIterator($pages_path) as $file) {
                 if ($file->isFile() && $file->getExtension() == 'md') {
                     $files[] = $file->getPathname();
                 }
             }
             sort($files);
         }
         return $files;
     }, 'findVideoFiles' => function ($videos_path) {
         $files = [];
         if (is_dir($videos_path)) {
             foreach (new DirectoryIterator($videos_path) as $file) {
                 if ($file->isFile() && $file->getExtension() == 'md') {
                     $files[] = $file->getPathname();
                 }
             }
             sort($files);
         }
         return $files;
     }, 'findReleaseFiles' => function ($releases_path) {
         $files = [];
         if (is_dir($releases_path)) {
             foreach (new DirectoryIterator($releases_path) as $file) {
                 if ($file->isFile() && $file->getExtension() == 'md') {
                     $version_number = substr($file->getFilename(), 0, strlen($file->getFilename()) - 3);
                     if (Shade::isValidVersionNumber($version_number)) {
                         $files[$version_number] = $file->getPathname();
                     }
                 }
             }
             uksort($files, function ($a, $b) {
                 return version_compare($b, $a);
             });
         }
         return $files;
     }, 'findWhatsNewFiles' => function ($whats_new_articles_path) {
         $files = [];
         if (is_dir($whats_new_articles_path)) {
             foreach (new DirectoryIterator($whats_new_articles_path) as $version_dir) {
                 if (!$version_dir->isDot() && $version_dir->isDir() && Shade::isValidVersionNumber($version_dir->getFilename())) {
                     $version_num = $version_dir->getFilename();
                     foreach (new DirectoryIterator($version_dir->getPathname()) as $file) {
                         if ($file->isFile() && $file->getExtension() == 'md') {
                             $files[$version_num][] = $file->getPathname();
                         }
                     }
                 }
             }
             if (count($files)) {
                 ksort($files);
                 foreach ($files as $version_num => $version_articles) {
                     sort($files[$version_num]);
                 }
             }
         }
         return $files;
     }];
 }