From ac48660a7f4380ca07bd0f06af86723d97d3d2be Mon Sep 17 00:00:00 2001 From: colinmollenhour Date: Wed, 4 Jul 2012 15:35:18 -0400 Subject: [PATCH] Add disableOutput method, use disableOutput method when images are output in controller actions to prevent headers already sent errors in logs. --- .../Cms/Wysiwyg/ImagesController.php | 1 + .../controllers/Cms/WysiwygController.php | 1 + .../Mage/Core/Controller/Response/Http.php | 21 ++++++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php b/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php index 5b1bf2d3c0a71..97442f3ecbed9 100644 --- a/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php +++ b/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php @@ -182,6 +182,7 @@ public function onInsertAction() */ public function thumbnailAction() { + $this->getResponse()->disableOutput(); $file = $this->getRequest()->getParam('file'); $file = Mage::helper('Mage_Cms_Helper_Wysiwyg_Images')->idDecode($file); $thumb = $this->getStorage()->resizeOnTheFly($file); diff --git a/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php b/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php index caf3e505e00a9..2080997c113e8 100644 --- a/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php +++ b/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php @@ -40,6 +40,7 @@ class Mage_Adminhtml_Cms_WysiwygController extends Mage_Adminhtml_Controller_Act */ public function directiveAction() { + $this->getResponse()->disableOutput(); $directive = $this->getRequest()->getParam('___directive'); $directive = Mage::helper('Mage_Core_Helper_Data')->urlDecode($directive); $url = Mage::getModel('Mage_Core_Model_Email_Template_Filter')->filter($directive); diff --git a/app/code/core/Mage/Core/Controller/Response/Http.php b/app/code/core/Mage/Core/Controller/Response/Http.php index db9796e9c2463..4b8debfe10ba1 100644 --- a/app/code/core/Mage/Core/Controller/Response/Http.php +++ b/app/code/core/Mage/Core/Controller/Response/Http.php @@ -39,6 +39,20 @@ class Mage_Core_Controller_Response_Http extends Zend_Controller_Response_Http */ protected static $_transportObject = null; + /** + * @var bool + */ + protected $_isOutputDisabled = false; + + /** + * Disable response output; useful for situations where the response was already rendered such as + * with an image library that uses direct output. + */ + public function disableOutput() + { + $this->_isOutputDisabled = true; + } + /** * Fixes CGI only one Status header allowed bug * @@ -77,10 +91,15 @@ public function sendHeaders() return parent::sendHeaders(); } + /** + * Dispatch an event before the response is rendered and only render response if it is not disabled. + */ public function sendResponse() { Mage::dispatchEvent('http_response_send_before', array('response'=>$this)); - return parent::sendResponse(); + if ( ! $this->_isOutputDisabled) { + return parent::sendResponse(); + } } /**