BUG RSSFeed now sets the Content-Type on the current HTTPResponse

RSSFeed::outputToBrowser() used to use header() directly to set the content-type.
This stopped ContentNegotiator from correctly detecting that it didn't need to
convert the response, invalidating the XML.
This commit is contained in:
Simon Welsh 2012-12-12 10:38:56 +13:00
parent ac317674b3
commit 379b561cdb

View File

@ -188,18 +188,19 @@ class RSSFeed extends ViewableData {
public function outputToBrowser() {
$prevState = SSViewer::get_source_file_comments();
SSViewer::set_source_file_comments(false);
$response = Controller::curr()->getResponse();
if(is_int($this->lastModified)) {
HTTP::register_modification_timestamp($this->lastModified);
header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $this->lastModified) . ' GMT');
$response->addHeader('Last-Modified', gmdate("D, d M Y H:i:s", $this->lastModified) . ' GMT');
}
if(!empty($this->etag)) {
HTTP::register_etag($this->etag);
}
if(!headers_sent()) {
HTTP::add_cache_headers();
header("Content-type: text/xml");
HTTP::add_cache_headers($response);
$response->addHeader('Content-Type', 'text/xml');
}
SSViewer::set_source_file_comments($prevState);