69 lines
2.5 KiB
PHP
69 lines
2.5 KiB
PHP
<?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_Template_Cached $cached
|
|
* @param \Smarty_Internal_Template $_template
|
|
* @param string $content
|
|
*
|
|
* @throws \Exception
|
|
* @throws \SmartyException
|
|
*/
|
|
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;
|
|
}
|
|
}
|
|
}
|