]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Doing content negotiation only once
authorSarven Capadisli <csarven@status.net>
Thu, 19 Nov 2009 20:47:05 +0000 (20:47 +0000)
committerSarven Capadisli <csarven@status.net>
Thu, 19 Nov 2009 20:47:05 +0000 (20:47 +0000)
plugins/MobileProfile/MobileProfilePlugin.php

index e39edc86c78988cbf4ade4f7b2102c024e67cada..bc67a3f369d6ce350e6b41aed7e80a9b816f59a1 100644 (file)
@@ -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);