| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Smarty plugin | 
					
						
							|  |  |  |  * @package Smarty | 
					
						
							|  |  |  |  * @subpackage plugins | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * write out a file to disk | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param string $filename | 
					
						
							|  |  |  |  * @param string $contents | 
					
						
							|  |  |  |  * @param boolean $create_dirs | 
					
						
							|  |  |  |  * @return boolean | 
					
						
							| 
									
										
										
										
											2003-10-11 08:55:53 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2003-06-22 03:13:25 +00:00
										 |  |  | function smarty_core_write_file($params, &$smarty) | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2003-06-30 15:48:26 +00:00
										 |  |  |     $_dirname = dirname($params['filename']); | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if ($params['create_dirs']) { | 
					
						
							| 
									
										
										
										
											2003-06-30 15:48:26 +00:00
										 |  |  |         $_params = array('dir' => $_dirname); | 
					
						
							|  |  |  |         require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.create_dir_structure.php'); | 
					
						
							|  |  |  |         smarty_core_create_dir_structure($_params, $smarty); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-06-30 15:48:26 +00:00
										 |  |  |     // write to tmp file, then rename it to avoid
 | 
					
						
							|  |  |  |     // file locking race condition
 | 
					
						
							|  |  |  |     $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid(''); | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (!($fd = @fopen($_tmp_file, 'w'))) { | 
					
						
							| 
									
										
										
										
											2003-06-22 03:13:25 +00:00
										 |  |  |         $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  |         return false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     fwrite($fd, $params['contents']); | 
					
						
							|  |  |  |     fclose($fd); | 
					
						
							| 
									
										
										
										
											2003-06-30 15:48:26 +00:00
										 |  |  |     if(file_exists($params['filename'])) { | 
					
						
							|  |  |  |         @unlink($params['filename']); | 
					
						
							| 
									
										
										
										
											2003-10-11 08:55:53 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2003-06-30 15:48:26 +00:00
										 |  |  |     @rename($_tmp_file, $params['filename']); | 
					
						
							| 
									
										
										
										
											2003-06-30 15:41:25 +00:00
										 |  |  |     @chmod($params['filename'], $smarty->_file_perms); | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* vim: set expandtab: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ?>
 |