[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Smarty write file plugin 4 * 5 * @package Smarty 6 * @subpackage PluginsInternal 7 * @author Monte Ohrt 8 */ 9 10 /** 11 * Smarty Internal Write File Class 12 * 13 * @package Smarty 14 * @subpackage PluginsInternal 15 */ 16 class Smarty_Internal_Write_File { 17 18 /** 19 * Writes file in a safe way to disk 20 * 21 * @param string $_filepath complete filepath 22 * @param string $_contents file content 23 * @param Smarty $smarty smarty instance 24 * @return boolean true 25 */ 26 public static function writeFile($_filepath, $_contents, Smarty $smarty) 27 { 28 $_error_reporting = error_reporting(); 29 error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING); 30 if ($smarty->_file_perms !== null) { 31 $old_umask = umask(0); 32 } 33 34 $_dirpath = dirname($_filepath); 35 // if subdirs, create dir structure 36 if ($_dirpath !== '.' && !file_exists($_dirpath)) { 37 mkdir($_dirpath, $smarty->_dir_perms === null ? 0777 : $smarty->_dir_perms, true); 38 } 39 40 // write to tmp file, then move to overt file lock race condition 41 $_tmp_file = $_dirpath . DS . uniqid('wrt'); 42 if (!file_put_contents($_tmp_file, $_contents)) { 43 error_reporting($_error_reporting); 44 throw new SmartyException("unable to write file {$_tmp_file}"); 45 return false; 46 } 47 48 // remove original file 49 @unlink($_filepath); 50 51 // rename tmp file 52 $success = rename($_tmp_file, $_filepath); 53 if (!$success) { 54 error_reporting($_error_reporting); 55 throw new SmartyException("unable to write file {$_filepath}"); 56 return false; 57 } 58 59 if ($smarty->_file_perms !== null) { 60 // set file permissions 61 chmod($_filepath, $smarty->_file_perms); 62 umask($old_umask); 63 } 64 error_reporting($_error_reporting); 65 return true; 66 } 67 68 } 69 70 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |