| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Inline Runtime Methods render, setSourceByUid, setupSubTemplate | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package    Smarty | 
					
						
							|  |  |  |  * @subpackage PluginsInternal | 
					
						
							|  |  |  |  * @author     Uwe Tews | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  **/ | 
					
						
							|  |  |  | class Smarty_Internal_Runtime_CacheModify | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * check client side cache | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |      * @param \Smarty_Template_Cached   $cached | 
					
						
							| 
									
										
										
										
											2015-12-27 08:12:46 +01:00
										 |  |  |      * @param \Smarty_Internal_Template $_template | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |      * @param  string                   $content | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code; | 
					
						
							|  |  |  |         $_last_modified_date = | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |             @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3); | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |         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 */ | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                     !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                     ) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified'; | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                     } | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 default: | 
					
						
							|  |  |  |                     if ( /* ^phpunit */ | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                     !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                     ) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified'; | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                     } else { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified'); | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                     } | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             switch (PHP_SAPI) { | 
					
						
							|  |  |  |                 case 'cli': | 
					
						
							|  |  |  |                     if ( /* ^phpunit */ | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                     !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                     ) { | 
					
						
							| 
									
										
										
										
											2016-02-09 01:27:15 +01:00
										 |  |  |                         $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = | 
					
						
							| 
									
										
										
										
											2015-10-25 04:53:19 +01:00
										 |  |  |                             '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; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |