mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 12:21:36 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Smarty write file plugin
 | |
|  * 
 | |
|  * @package Smarty
 | |
|  * @subpackage PluginsInternal
 | |
|  * @author Monte Ohrt 
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Smarty Internal Write File Class
 | |
|  */
 | |
| class Smarty_Internal_Write_File {
 | |
|     /**
 | |
|      * Writes file in a save way to disk
 | |
|      * 
 | |
|      * @param string $_filepath complete filepath
 | |
|      * @param string $_contents file content
 | |
|      * @return boolean true
 | |
|      */
 | |
|     public static function writeFile($_filepath, $_contents, $smarty)
 | |
|     {
 | |
|         $old_umask = umask(0);
 | |
|         $_dirpath = dirname($_filepath); 
 | |
|         // if subdirs, create dir structure
 | |
|         if ($_dirpath !== '.' && !file_exists($_dirpath)) {
 | |
|             mkdir($_dirpath, $smarty->_dir_perms, true);
 | |
|         } 
 | |
|         // write to tmp file, then move to overt file lock race condition
 | |
|         $_tmp_file = tempnam($_dirpath, 'wrt');
 | |
| 
 | |
| 	    if (!($fd = @fopen($_tmp_file, 'wb'))) {
 | |
|         	$_tmp_file = $_dirpath . DS . uniqid('wrt');
 | |
|         	if (!($fd = @fopen($_tmp_file, 'wb'))) {
 | |
|             throw new SmartyException("unable to write file {$_tmp_file}");
 | |
|             return false;
 | |
|         	}
 | |
|    		 }
 | |
| 
 | |
|     	fwrite($fd, $_contents);
 | |
|     	fclose($fd);
 | |
| 
 | |
|         // remove original file
 | |
|         if (file_exists($_filepath))
 | |
|             @unlink($_filepath); 
 | |
|         // rename tmp file
 | |
|         rename($_tmp_file, $_filepath); 
 | |
|         // set file permissions
 | |
|         chmod($_filepath, $smarty->_file_perms);
 | |
|         umask($old_umask);
 | |
|         return true;
 | |
|     } 
 | |
| } 
 | |
| 
 | |
| ?>
 |