From 30866b71bb535ecdcae23619730595d9d55ca26f Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 20 May 2008 09:27:22 -0400 Subject: [PATCH] convert html-generation functions to use XMLWriter darcs-hash:20080520132722-84dde-88a619005006dd032ac82c0e27d07c820843ab7e.gz --- lib/util.php | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/lib/util.php b/lib/util.php index 8148acdf78..fb4a4cb7e2 100644 --- a/lib/util.php +++ b/lib/util.php @@ -36,32 +36,50 @@ function common_user_error($msg, $code=200) { common_show_footer(); } +$xw = null; + # Start an HTML element function common_element_start($tag, $attrs=NULL) { - print "<$tag"; + global $xw; + $xw->startElement($tag); if (is_array($attrs)) { foreach ($attrs as $name => $value) { - print " $name='$value'"; + $xw->writeAttribute($name, $value); } } else if (is_string($attrs)) { - print " class='$attrs'"; + $xw->writeAttribute('class', $attrs); } - print '>'; } function common_element_end($tag) { - print ""; + global $xw; + $xw->endElement(); } function common_element($tag, $attrs=NULL, $content=NULL) { common_element_start($tag, $attrs); - if ($content) print htmlspecialchars($content); + if ($content) { + global $xw; + $xw->text($content); + } common_element_end($tag); } function common_show_header($pagetitle) { - global $config; - common_element_start('html'); + global $config, $xw; + + $xw = new XMLWriter(); + $xw->openURI('php://output'); + $xw->startDocument('1.0', 'UTF-8'); + $xw->writeDTD('html', '-//W3C//DTD XHTML 1.0 Strict//EN', + 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'); + + # FIXME: correct language for interface + + common_element_start('html', array('xmlns' => 'http://www.w3.org/1999/xhtml', + 'xml:lang' => 'en', + 'lang' => 'en')); + common_element_start('head'); common_element('title', NULL, $pagetitle . " - " . $config['site']['name']); @@ -72,9 +90,12 @@ function common_show_header($pagetitle) { } function common_show_footer() { + global $xw; common_foot_menu(); common_element_end('body'); common_element_end('html'); + $xw->endDocument(); + $xw->flush(); } function common_head_menu() {