From: Sarven Capadisli Date: Thu, 19 Nov 2009 20:47:05 +0000 (+0000) Subject: Doing content negotiation only once X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=3ff5dd6989739ac5c501d9d2016c82c66de87490;p=quix0rs-gnu-social.git Doing content negotiation only once --- diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php index e39edc86c7..bc67a3f369 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);