예제 #1
0
 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);
 }
예제 #2
0
 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);
 }
예제 #3
0
 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);
 }
예제 #4
0
 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();
 }