| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | <?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, &$smarty){    $_dirname = dirname($params['filename']);    if ($params['create_dirs']) {        $_params = array('dir' => $_dirname);        require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php');        smarty_core_create_dir_structure($_params, $smarty);    }    // write to tmp file, then rename it to avoid file locking race condition    $_tmp_file = tempnam($_dirname, 'wrt');    if (!($fd = @fopen($_tmp_file, 'wb'))) {        $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt');        if (!($fd = @fopen($_tmp_file, 'wb'))) {            $smarty->trigger_error("problem writing temporary file '$_tmp_file'");            return false;        }    }    fwrite($fd, $params['contents']);    fclose($fd);    if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) {        // On platforms and filesystems that cannot overwrite with rename()         // delete the file before renaming it -- because windows always suffers        // this, it is short-circuited to avoid the initial rename() attempt        @unlink($params['filename']);        @rename($_tmp_file, $params['filename']);    }    @chmod($params['filename'], $smarty->_file_perms);    return true;}/* vim: set expandtab: */?>
 |