示例#1
0
 private static function directoryTreeBuilder($dir, $ignore, $mode = Merville::LIVE_MODE, $parents = null)
 {
     if ($dh = opendir($dir)) {
         $node = new DirectoryEntry($dir, $parents);
         $new_parents = $parents;
         if (is_null($new_parents)) {
             $new_parents = array();
         } else {
             $new_parents[] = $node;
         }
         while (($entry = readdir($dh)) !== false) {
             if ($entry == '.' || $entry == '..') {
                 continue;
             }
             $path = $dir . DIRECTORY_SEPARATOR . $entry;
             if (is_dir($path) && in_array($entry, $ignore['folders'])) {
                 continue;
             }
             if (!is_dir($path) && in_array($entry, $ignore['files'])) {
                 continue;
             }
             $file_details = static::pathinfo($path);
             if (is_dir($path)) {
                 $entry = static::directoryTreeBuilder($path, $ignore, $mode, $new_parents);
             } elseif (in_array($file_details['extension'], Merville::$VALID_MARKDOWN_EXTENSIONS)) {
                 $entry = new DirectoryEntry($path, $new_parents);
                 if ($mode === Merville::STATIC_MODE) {
                     $entry->uri .= '.html';
                 }
             }
             if ($entry instanceof DirectoryEntry) {
                 $node->value[$entry->uri] = $entry;
             }
         }
         $node->sort();
         $node->first_page = $node->get_first_page();
         $index_key = $mode === Merville::LIVE_MODE ? 'index' : 'index.html';
         if (isset($node->value[$index_key])) {
             $node->value[$index_key]->first_page = $node->first_page;
             $node->index_page = $node->value[$index_key];
         } else {
             $node->index_page = false;
         }
         return $node;
     }
 }