Last Modified 2013-09-04 by Jan Schneider

Output Buffering

This information is valid for Horde 4 and later only.

Normally in PHP, one could wrap code in ob_start() and ob_get_clean() to grab output meant for the browser. Unfortunately, it is not so easy in the Horde framework since CSS stylesheet and JS output must not be sent until the page is entirely ready to output to the browser.

Therefore, it is necessary to use the Horde utility functions Horde::startBuffer() and Horde::endBuffer() to do output buffering. Example:

$notification->notify(array('listeners' => 'status'));
$notify_output = Horde::endBuffer();

In the above example, the status notifications may do things like add javascript files to the output buffer. By using startBuffer()/endBuffer(), this guarantees that these javascript files will not be output to the browser and will instead properly be displayed when the page header is eventually created (normally templates/common-header.inc).