12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?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;
- }
- }
- }
|