| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  */     | 
					
						
							|  |  |  | function smarty_core_write_file($params, &$this) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	$_dirname = dirname($params['filename']); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if ($params['create_dirs']) { | 
					
						
							|  |  |  | 		$_params = array('dir' => $_dirname); | 
					
						
							| 
									
										
										
										
											2003-06-21 17:35:15 +00:00
										 |  |  | 		require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.create_dir_structure.php'); | 
					
						
							| 
									
										
										
										
											2003-06-16 15:18:38 +00:00
										 |  |  | 		smarty_core_create_dir_structure($_params, $this); | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// write to tmp file, then rename it to avoid
 | 
					
						
							|  |  |  | 	// file locking race condition
 | 
					
						
							| 
									
										
										
										
											2003-06-21 17:39:15 +00:00
										 |  |  | 	$_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid(''); | 
					
						
							| 
									
										
										
										
											2003-05-08 20:21:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (!($fd = @fopen($_tmp_file, 'w'))) { | 
					
						
							|  |  |  |         $this->trigger_error("problem writing temporary file '$_tmp_file'"); | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     fwrite($fd, $params['contents']); | 
					
						
							|  |  |  |     fclose($fd); | 
					
						
							|  |  |  | 	if(file_exists($params['filename'])) { | 
					
						
							|  |  |  | 		@unlink($params['filename']); | 
					
						
							|  |  |  | 	}  | 
					
						
							|  |  |  | 	@rename($_tmp_file, $params['filename']); | 
					
						
							|  |  |  |     chmod($params['filename'], $this->_file_perms); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* vim: set expandtab: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ?>
 |