changeset 100:0a33803ee026

Setting variant correctly.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Sat, 27 Sep 2014 10:54:58 +0200
parents d98e315308cd
children 408ffecc9076 41c128ba0c2c
files InputParser.inc Page.inc
diffstat 2 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/InputParser.inc	Sun Sep 14 21:11:27 2014 +0200
+++ b/InputParser.inc	Sat Sep 27 10:54:58 2014 +0200
@@ -39,6 +39,8 @@
       $this->options->setLang($_GET['lang']);
     }
     else {
+      if (count($this->options->getAcceptedLanguages()) > 1)
+	$this->addVariant('Accept-Language');
       $this->options->setLang($this->options->getDefaultLang());
     }
 
--- a/Page.inc	Sun Sep 14 21:11:27 2014 +0200
+++ b/Page.inc	Sat Sep 27 10:54:58 2014 +0200
@@ -57,6 +57,17 @@
 abstract class Page
 {
   private $cache;
+  private $variants = array();
+
+  function addVariant($value)
+  {
+    array_push($this->variants, $value);
+  }
+
+  function getVariants()
+  {
+    return $this->variants;
+  }
 
   /**
    * Constructs a page
@@ -99,6 +110,8 @@
    */
   function mayCompress()
   {
+    //We want to add the variant even if we don't serve with compression.
+    $this->addVariant('Accept-Encoding');
     if (!array_key_exists('HTTP_ACCEPT_ENCODING', $_SERVER))
       return false;
     return (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'));
@@ -189,6 +202,9 @@
     elseif (get_class($res) !== "PageContent") {
       throw new InvalidArgumentException("generateContent returned an unexpected type");
     }
+    if ($variants = $this->getVariants()) {
+      $res->setHeader('Vary', join(",", $variants));
+    }
     return $res;
   }