Example #1
0
 /**
  * Sends HTTP Headers
  *
  * @return void
  */
 private function _setHttpHeaders()
 {
     $filename = "";
     $description = "";
     $mimeType = "";
     // Evaluate data upon export type request
     switch ($this->type) {
         case EXPORT_TYPE_DOCBOOK:
             $filename = "phpmyfaq_docbook.xml";
             $description = "phpMyFaq DocBook export file";
             // http://www.docbook.org/specs/wd-docbook-docbook-4.5CR1.html#a.mimetype
             $mimeType = "application/docbook+xml";
             break;
         case EXPORT_TYPE_PDF:
             $filename = "phpmyfaq.pdf";
             $description = "phpMyFaq PDF export file";
             $mimeType = "application/pdf";
             break;
         case EXPORT_TYPE_XHTML:
             $filename = "phpmyfaq.xhtml";
             $description = "phpMyFaq XHTML export file";
             $mimeType = "text/html";
             // Why not: text/html or text/xml?
             // See e.g.: http://www.hixie.ch/advocacy/xhtml
             // Unfortunaltelly IE doesn't handle it correctly :(
             // so currenctly we must use text/html as default.
             // See e.g.: http://keystonewebsites.com/articles/mime_type.php
             if (isset($_SERVER["HTTP_ACCEPT"]) && !(strpos($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml") === false)) {
                 $mimeType = "application/xhtml+xml";
             }
             break;
         case EXPORT_TYPE_XML:
             $filename = "phpmyfaq.xml";
             $description = "phpMyFaq XML export file";
             $mimeType = "text/xml";
             break;
             // In this case no default statement is required:
             // the one above is just for clean coding style
         // In this case no default statement is required:
         // the one above is just for clean coding style
         default:
             $filename = "phpmyfaq.pmf";
             $description = "Generic file";
             $mimeType = "application/octet-stream";
             break;
     }
     // Set the correct HTTP headers:
     // 1. Prevent proxies&browsers caching
     header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
     header("Expires: 0");
     header("Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
     header("Pragma: no-cache");
     // 2. Set the correct values for file streaming
     header("Content-Type: " . $mimeType);
     if ($this->disposition == self::HTTP_CONTENT_DISPOSITION_ATTACHMENT && isset($_SERVER["HTTP_USER_AGENT"]) && !(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE") === false)) {
         header("Content-Type: application/force-download");
     }
     // RFC2616, �19.5.1: $filename must be a quoted-string
     header("Content-Disposition: " . $this->disposition . "; filename=\"" . PMF_Export::getExportTimestamp() . "_" . $filename . "\"");
     if (!empty($description)) {
         header("Content-Description: " . $description);
     }
     header("Content-Transfer-Encoding: binary");
     // Deny partial downloads (opposite to: "Accept-Ranges: bytes")
     header("Accept-Ranges: none");
     header("Content-Length: " . $this->size);
 }
Example #2
0
 /**
  * Sends HTTP Headers
  *
  * @return void
  */
 private function _setHttpHeaders()
 {
     $filename = $description = $mimeType = '';
     // Evaluate data upon export type request
     switch ($this->type) {
         case 'pdf':
             $filename = "phpmyfaq.pdf";
             $description = "phpMyFaq PDF export file";
             $mimeType = "application/pdf";
             break;
         case 'xhtml':
             $filename = "phpmyfaq.xhtml";
             $description = "phpMyFaq XHTML export file";
             $mimeType = "text/html";
             // Why not: text/html or text/xml?
             // See e.g.: http://www.hixie.ch/advocacy/xhtml
             // Unfortunaltelly IE doesn't handle it correctly :(
             // so currenctly we must use text/html as default.
             // See e.g.: http://keystonewebsites.com/articles/mime_type.php
             if (isset($_SERVER["HTTP_ACCEPT"]) && !(strpos($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml") === false)) {
                 $mimeType = "application/xhtml+xml";
             }
             break;
         case 'xml':
             $filename = "phpmyfaq.xml";
             $description = "phpMyFaq XML export file";
             $mimeType = "text/xml";
             break;
         case 'csv':
             $filename = "phpmyfaq.csv";
             $description = "phpMyFaq CSV export file";
             $mimeType = "text/csv";
             break;
             // In this case no default statement is required:
             // the one above is just for clean coding style
         // In this case no default statement is required:
         // the one above is just for clean coding style
         default:
             $filename = "phpmyfaq.pmf";
             $description = "Generic file";
             $mimeType = "application/octet-stream";
             break;
     }
     // Set the correct HTTP headers:
     // 1. Prevent proxies&browsers caching
     $this->response->headers->set("Last-Modified", gmdate("D, d M Y H:i:s") . " GMT");
     $this->response->headers->set("Expires", "0");
     $this->response->headers->set("Cache-Control", "private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
     $this->response->headers->set("Pragma", "no-cache");
     // 2. Set the correct values for file streaming
     if ($this->disposition == self::HTTP_CONTENT_DISPOSITION_ATTACHMENT && isset($_SERVER["HTTP_USER_AGENT"]) && !(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE") === false)) {
         $this->response->headers->set("Content-Type", "application/force-download");
     } else {
         $this->response->headers->set("Content-Type", $mimeType);
     }
     // RFC2616, �19.5.1: $filename must be a quoted-string
     $this->response->headers->set("Content-Disposition", $this->disposition . "; filename=\"" . PMF_Export::getExportTimestamp() . "_" . $filename . "\"");
     if (!empty($description)) {
         $this->response->headers->set("Content-Description", $description);
     }
     $this->response->headers->set("Content-Transfer-Encoding", "binary");
     $this->response->headers->set("Accept-Ranges", "none");
     $this->response->headers->set("Content-Length", $this->size);
 }