function save() { BoostState::save(array_map(function ($page) { return $page->state(); }, $this->pages), $this->hash_file); BoostState::save($this->page_cache, $this->page_cache_file); }
function generate_rss_feed($feed_data) { $feed_file = $feed_data['path']; $feed_pages = $feed_data['pages']; $rss_feed = $this->rss_prefix($feed_file, $feed_data); if (isset($feed_data['count'])) { $feed_pages = array_slice($feed_pages, 0, $feed_data['count']); } foreach ($feed_pages as $qbk_page) { $item_xml = null; // TODO: Need a better way to telll when to update an RSS item. // Maybe by tracking qbk_hash? if ($qbk_page->description_xml) { $item = $this->generate_rss_item($qbk_page->qbk_file, $qbk_page); $item['item'] = BoostSiteTools::trim_lines($item['item']); $this->rss_items[$qbk_page->qbk_file] = $item; BoostState::save($this->rss_items, $this->rss_state_path); $rss_feed .= $item['item']; } else { if (isset($this->rss_items[$qbk_page->qbk_file])) { $rss_feed .= $this->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); }
function save() { $flat_release_data = array(); foreach ($this->release_data as $base_version => $versions) { foreach ($versions as $version => $data) { $flat_release_data[$version] = $this->flatten_array($data); } } BoostState::save($flat_release_data, $this->release_file); }
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(); }