mode = $mode; } /** * Set the page's MIME type */ public function set_type($type) { $this->type = $type; } // ============================================== // data var $data = ""; var $filename = null; /** * If the page is in "data" mode, this will set the data to be sent */ public function set_data($data) { $this->data = $data; } /** * If the page is in "data" mode, this will set the recommended download filename */ public function set_filename($filename) { $this->filename = $filename; } // ============================================== // redirect var $redirect = ""; /** * If the page is in "redirect" mode, this will set where to redirect to */ public function set_redirect($redirect) { $this->redirect = $redirect; } // ============================================== // page var $title = ""; var $heading = ""; var $subheading = ""; var $quicknav = ""; var $headers = array(); var $blocks = array(); /** * If the page is in "page" mode, set the window title */ public function set_title($title) { $this->title = $title; } /** * If the page is in "page" mode, set the main heading */ public function set_heading($heading) { $this->heading = $heading; } /** * If the page is in "page" mode, set the sub heading */ public function set_subheading($subheading) { $this->subheading = $subheading; } /** * If the page is in "page" mode, add a line to the HTML head section */ public function add_header($line, $position=50) { while(isset($this->headers[$position])) $position++; $this->headers[$position] = $line; } /** * If the page is in "page" mode, add a block of data */ public function add_block($block) { $this->blocks[] = $block; } // ============================================== /** * display the page according to the mode and data given */ public function display() { global $page; header("Content-type: {$this->type}"); header("X-Powered-By: SCore-".SCORE_VERSION); switch($this->mode) { case "page": header("Cache-control: no-cache"); usort($this->blocks, "blockcmp"); $this->add_auto_headers(); $layout = new Layout(); $layout->display_page($page); break; case "data": if(!is_null($this->filename)) { header('Content-Disposition: attachment; filename='.$this->filename); } print $this->data; break; case "redirect": header("Location: {$this->redirect}"); print "You should be redirected to {$this->redirect}"; break; default: print "Invalid page mode"; break; } } protected function add_auto_headers() { $data_href = get_base_href(); foreach(glob("lib/*.js") as $js) { $this->add_header(""); } $css_files = glob("ext/*/style.css"); if($css_files) { foreach($css_files as $css_file) { $this->add_header(""); } } $js_files = glob("ext/*/script.js"); if($js_files) { foreach($js_files as $js_file) { $this->add_header(""); } } } } ?>