diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_write_file.php b/gosa-core/include/smarty/sysplugins/smarty_internal_write_file.php
index aae600ee11bc5f64c75bcfbf2d6a0769c699b6e4..4e34335fbebec92d371bb765c81d8df86b95e474 100644 (file)
<?php
+
/**
* Smarty write file plugin
- *
+ *
* @package Smarty
* @subpackage PluginsInternal
- * @author Monte Ohrt
+ * @author Monte Ohrt
*/
/**
* Smarty Internal Write File Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
*/
class Smarty_Internal_Write_File {
-
/**
- * Writes file in a safe way to disk
- *
+ * Writes file in a save way to disk
+ *
* @param string $_filepath complete filepath
* @param string $_contents file content
- * @param Smarty $smarty smarty instance
* @return boolean true
*/
- public static function writeFile($_filepath, $_contents, Smarty $smarty)
+ public static function writeFile($_filepath, $_contents, $smarty)
{
- $_error_reporting = error_reporting();
- error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
- if ($smarty->_file_perms !== null) {
- $old_umask = umask(0);
- }
-
- $_dirpath = dirname($_filepath);
+ $old_umask = umask(0);
+ $_dirpath = dirname($_filepath);
// if subdirs, create dir structure
if ($_dirpath !== '.' && !file_exists($_dirpath)) {
- mkdir($_dirpath, $smarty->_dir_perms === null ? 0777 : $smarty->_dir_perms, true);
- }
-
+ mkdir($_dirpath, $smarty->_dir_perms, true);
+ }
// write to tmp file, then move to overt file lock race condition
- $_tmp_file = $_dirpath . DS . uniqid('wrt');
- if (!file_put_contents($_tmp_file, $_contents)) {
- error_reporting($_error_reporting);
+ $_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;
- }
+ }
+ }
- // remove original file
- unlink($_filepath);
+ fwrite($fd, $_contents);
+ fclose($fd);
+ // remove original file
+ if (file_exists($_filepath))
+ @unlink($_filepath);
// rename tmp file
- $success = rename($_tmp_file, $_filepath);
- if (!$success) {
- error_reporting($_error_reporting);
- throw new SmartyException("unable to write file {$_filepath}");
- return false;
- }
-
- if ($smarty->_file_perms !== null) {
- // set file permissions
- chmod($_filepath, $smarty->_file_perms);
- umask($old_umask);
- }
- error_reporting($_error_reporting);
+ rename($_tmp_file, $_filepath);
+ // set file permissions
+ chmod($_filepath, $smarty->_file_perms);
+ umask($old_umask);
return true;
- }
-
-}
+ }
+}
?>
\ No newline at end of file