diff options
Diffstat (limited to 'include/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php')
-rw-r--r-- | include/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/include/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/include/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php new file mode 100644 index 000000000..4e2fb83e6 --- /dev/null +++ b/include/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php @@ -0,0 +1,67 @@ +<?php + +/** + * Inline Runtime Methods render, setSourceByUid, setupSubTemplate + * + * @package Smarty + * @subpackage PluginsInternal + * @author Uwe Tews + * + **/ +class Smarty_Internal_Runtime_CacheModify +{ + /** + * check client side cache + * + * @param Smarty_Internal_Template $_template + * @param string $content + */ + public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content) + { + $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code; + $_last_modified_date = + @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3); + if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) { + switch (PHP_SAPI) { + case 'cgi': // php-cgi < 5.3 + case 'cgi-fcgi': // php-cgi >= 5.3 + case 'fpm-fcgi': // php-fpm >= 5.3.3 + header('Status: 304 Not Modified'); + break; + + case 'cli': + if ( /* ^phpunit */ + !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */ + ) { + $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified'; + } + break; + + default: + if ( /* ^phpunit */ + !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */ + ) { + $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified'; + } else { + header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); + } + break; + } + } else { + switch (PHP_SAPI) { + case 'cli': + if ( /* ^phpunit */ + !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */ + ) { + $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = + 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT'; + } + break; + default: + header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT'); + break; + } + echo $content; + } + } +} |