base = $base; $this->output_dir = $output; if(!is_dir($this->output_dir) || !is_dir($this->output_dir.'/assets')) { @mkdir($this->output_dir); @mkdir($this->output_dir.'/assets/'); copy(dirname(__FILE__).'/chm_style.css', $this->output_dir.'/assets/chm_style.css'); } Prado::setPathOfAlias('Output', realpath($this->output_dir)); } public function buildDoc($pages) { foreach($pages as $section) { foreach($section as $page) { $this->parsePage($page); } } } protected function initApp() { $this->app = new TApplication($this->base); $response = new THttpResponse(); $response->setBufferOutput(false); $this->app->setResponse($response); $assets = new TAssetManager(); $assets->setBasePath('Output.assets.*'); $this->app->setAssetManager($assets); } public function parsePage($page) { $_GET['page'] = str_replace(array('/','.page'),array('.',''),$page); $_GET['notheme'] = 'true'; $html = $this->parseHtmlContent($this->getApplicationContent()); $file = str_replace(array('/','.page'), array('_','.html'),$page); // echo 'writing file '.$file."\n"; file_put_contents($this->output_dir.'/'.$file, $html); } public function getApplicationContent() { ob_start(); $this->initApp(); $this->app->run(); $content = ob_get_contents(); ob_end_clean(); return $content; } public function parseHtmlContent($content) { $html = preg_replace('/]+\/>/m', '', $content); $html = str_replace('', '', $html); $html = preg_replace('/