示例#1
0
 function __construct($root, $hash_file, $page_cache, $release_file)
 {
     $this->root = $root;
     $this->hash_file = "{$root}/{$hash_file}";
     $this->page_cache_file = "{$root}/{$page_cache}";
     $this->releases = new BoostReleases("{$root}/{$release_file}");
     if (is_file($this->hash_file)) {
         foreach (BoostState::load($this->hash_file) as $qbk_file => $record) {
             if (!isset($record['section'])) {
                 $location_data = $this->get_page_location_data($qbk_file);
                 $record['section'] = $location_data['section'];
             }
             $this->pages[$qbk_file] = new BoostPages_Page($qbk_file, $this->get_release_data($qbk_file, $record['section']), $record);
         }
     }
     if (is_file($this->page_cache_file)) {
         $this->page_cache = BoostState::load($this->page_cache_file);
     }
     // Temporary code to update release data
     foreach ($this->pages as $qbk_file => $page) {
         if ($page->release_data && array_key_exists('version', $page->release_data) && !array_key_exists('release_date', $page->release_data) && $page->get_release_status() == 'released' && $page->pub_date) {
             $version = $page->release_data['version'];
             $base_version = $version->base_version();
             $this->releases->release_data[$base_version][(string) $version]['release_date'] = $page->pub_date;
             $page->release_data['release_date'] = $page->pub_date;
         }
     }
     $this->releases->save();
 }
示例#2
0
 function __construct($root, $hash_file)
 {
     $this->root = $root;
     $this->hash_file = "{$root}/{$hash_file}";
     if (is_file($this->hash_file)) {
         foreach (BoostState::load($this->hash_file) as $qbk_file => $record) {
             $this->pages[$qbk_file] = new BoostPages_Page($qbk_file, $record);
         }
     }
 }
示例#3
0
 function __construct($root, $rss_state_path)
 {
     $this->root = $root;
     $this->rss_state_path = "{$root}/{$rss_state_path}";
     if (is_file($this->rss_state_path)) {
         $this->rss_items = BoostState::load($this->rss_state_path);
         foreach ($this->rss_items as &$item) {
             if (!empty($item['last_modified']) && is_numeric($item['last_modified'])) {
                 $item['last_modified'] = new DateTime("@{$item['last_modified']}");
             }
         }
         unset($item);
     }
 }
示例#4
0
 function __construct($release_file)
 {
     $this->release_file = $release_file;
     if (is_file($this->release_file)) {
         $release_data = array();
         foreach (BoostState::load($this->release_file) as $version => $data) {
             $data = $this->unflatten_array($data);
             $version_object = BoostVersion::from($version);
             $base_version = $version_object->base_version();
             $version = (string) $version_object;
             if (isset($this->release_data[$base_version][$version])) {
                 echo "Duplicate release data for {$version}.\n";
             }
             $this->release_data[$base_version][$version] = $data;
         }
     }
 }
 function update_quickbook($refresh = false)
 {
     $pages = $this->load_pages();
     if (!$refresh) {
         $this->scan_for_new_quickbook_pages($pages);
     }
     // Translate new and changed pages
     $pages->convert_quickbook_pages($refresh);
     // Generate 'Index' pages
     $downloads = array();
     foreach (BoostPageSettings::$downloads as $x) {
         $entries = $pages->match_pages($x['matches'], null, true);
         if (isset($x['count'])) {
             $entries = array_slice($entries, 0, $x['count']);
         }
         if ($entries) {
             $y = array('anchor' => $x['anchor'], 'entries' => $entries);
             if (count($entries) == 1) {
                 $y['label'] = $x['single'];
             } else {
                 $y['label'] = $x['plural'];
             }
             $downloads[] = $y;
         }
     }
     $index_page_variables = compact('pages', 'downloads');
     foreach (BoostPageSettings::$index_pages as $index_page => $template) {
         BoostPages::write_template("{$this->root}/{$index_page}", __DIR__ . '/' . $template, $index_page_variables);
     }
     # Generate RSS feeds
     if (!$refresh) {
         $rss_items = BoostState::load("{$this->root}/generated/state/rss-items.txt");
         foreach (BoostPageSettings::$feeds as $feed_file => $feed_data) {
             $rss_feed = $this->rss_prefix($feed_file, $feed_data);
             $feed_pages = $pages->match_pages($feed_data['matches']);
             if (isset($feed_data['count'])) {
                 $feed_pages = array_slice($feed_pages, 0, $feed_data['count']);
             }
             foreach ($feed_pages as $qbk_page) {
                 $item_xml = null;
                 if ($qbk_page->loaded) {
                     $item = $this->generate_rss_item($qbk_page->qbk_file, $qbk_page);
                     $item['item'] = self::fragment_to_string($item['item']);
                     $rss_items[$qbk_page->qbk_file] = $item;
                     BoostState::save($rss_items, "{$this->root}/generated/state/rss-items.txt");
                     $rss_feed .= $item['item'];
                 } else {
                     if (isset($rss_items[$qbk_page->qbk_file])) {
                         $rss_feed .= $rss_items[$qbk_page->qbk_file]['item'];
                     } else {
                         echo "Missing entry for {$qbk_page->qbk_file}\n";
                     }
                 }
             }
             $rss_feed .= $this->rss_postfix($feed_file, $feed_data);
             $output_file = fopen("{$this->root}/{$feed_file}", 'wb');
             fwrite($output_file, $rss_feed);
             fclose($output_file);
         }
     }
     $pages->save();
 }