diff options
author | Sarven Capadisli <csarven@status.net> | 2009-11-19 20:47:05 +0000 |
---|---|---|
committer | Sarven Capadisli <csarven@status.net> | 2009-11-19 20:47:05 +0000 |
commit | 3ff5dd6989739ac5c501d9d2016c82c66de87490 (patch) | |
tree | b0e2e3b21fa91aab0f2b88de073278efe7432310 | |
parent | 93f6981b71c5fe4445352ca83a01a964fca9f078 (diff) |
Doing content negotiation only once
-rw-r--r-- | plugins/MobileProfile/MobileProfilePlugin.php | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php index e39edc86c..bc67a3f36 100644 --- a/plugins/MobileProfile/MobileProfilePlugin.php +++ b/plugins/MobileProfile/MobileProfilePlugin.php @@ -64,20 +64,7 @@ class MobileProfilePlugin extends WAP20Plugin function onStartShowHTML($action) { - if (!$type) { - $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? - $_SERVER['HTTP_ACCEPT'] : null; - - $cp = common_accept_to_prefs($httpaccept); - $sp = common_accept_to_prefs(PAGE_TYPE_PREFS); - $type = common_negotiate_type($cp, $sp); - - if (!$type) { - throw new ClientException(_('This page is not available in a '. - 'media type you accept'), 406); - } - } // XXX: This should probably graduate to WAP20Plugin @@ -184,11 +171,29 @@ class MobileProfilePlugin extends WAP20Plugin return true; } - header('Content-Type: '.$type); + if (!$type) { + $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? + $_SERVER['HTTP_ACCEPT'] : null; + + $cp = common_accept_to_prefs($httpaccept); + $sp = common_accept_to_prefs(PAGE_TYPE_PREFS); - $action->extraHeaders(); + $type = common_negotiate_type($cp, $sp); - $action->startXML('html', + if (!$type) { + throw new ClientException(_('This page is not available in a '. + 'media type you accept'), 406); + } + } + + header('Content-Type: '.$type); + + $this->extraHeaders(); + if (preg_match("/.*\/.*xml/", $type)) { + // Required for XML documents + $this->xw->startDocument('1.0', 'UTF-8'); + } + $this->xw->writeDTD('html', '-//WAPFORUM//DTD XHTML Mobile 1.0//EN', $this->DTD); |