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(); }
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); } } }
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); } }
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(); }