You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

smarty_internal_runtime_cachemodify.php 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * Inline Runtime Methods render, setSourceByUid, setupSubTemplate
  4. *
  5. * @package Smarty
  6. * @subpackage PluginsInternal
  7. * @author Uwe Tews
  8. *
  9. **/
  10. class Smarty_Internal_Runtime_CacheModify
  11. {
  12. /**
  13. * check client side cache
  14. *
  15. * @param \Smarty_Template_Cached $cached
  16. * @param \Smarty_Internal_Template $_template
  17. * @param string $content
  18. *
  19. * @throws \Exception
  20. * @throws \SmartyException
  21. */
  22. public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content)
  23. {
  24. $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code;
  25. $_last_modified_date =
  26. @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3);
  27. if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
  28. switch (PHP_SAPI) {
  29. case 'cgi': // php-cgi < 5.3
  30. case 'cgi-fcgi': // php-cgi >= 5.3
  31. case 'fpm-fcgi': // php-fpm >= 5.3.3
  32. header('Status: 304 Not Modified');
  33. break;
  34. case 'cli':
  35. if ( /* ^phpunit */
  36. !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
  37. ) {
  38. $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
  39. }
  40. break;
  41. default:
  42. if ( /* ^phpunit */
  43. !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
  44. ) {
  45. $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
  46. } else {
  47. header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified');
  48. }
  49. break;
  50. }
  51. } else {
  52. switch (PHP_SAPI) {
  53. case 'cli':
  54. if ( /* ^phpunit */
  55. !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
  56. ) {
  57. $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] =
  58. 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
  59. }
  60. break;
  61. default:
  62. header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
  63. break;
  64. }
  65. echo $content;
  66. }
  67. }
  68. }