diff options
author | Chad Parry <github@chad.parry.org> | 2011-04-23 21:19:47 -0600 |
---|---|---|
committer | Chad Parry <github@chad.parry.org> | 2011-04-30 17:45:44 -0600 |
commit | 5c9a3b3f39f6ff0d5c84c2cf283d27eaebe2e66e (patch) | |
tree | c60dd8a696ba3bc3142f86e01a4464d526a2ee1f /modules/gallery/helpers | |
parent | 97400b78153620262120868b37545170416413c9 (diff) |
Create a tempnam substitute that safely creates files with a given extension.
Diffstat (limited to 'modules/gallery/helpers')
-rw-r--r-- | modules/gallery/helpers/system.php | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/modules/gallery/helpers/system.php b/modules/gallery/helpers/system.php index c39c7227..31ecafa7 100644 --- a/modules/gallery/helpers/system.php +++ b/modules/gallery/helpers/system.php @@ -40,4 +40,29 @@ class system_Core { } return null; } + + /** + * Create a file with a unique file name. + * This helper is similar to the built-in tempnam, except that it supports an optional postfix. + */ + static function tempnam($dir = TMPPATH, $prefix = "", $postfix = "") { + return self::_tempnam($dir, $prefix, $postfix, "tempnam"); + } + + // This helper provides a dependency-injected implementation of tempnam. + static function _tempnam($dir, $prefix, $postfix, $builtin) { + $success = false; + do { + $basename = call_user_func($builtin, $dir, $prefix); + if (!$basename) { + return false; + } + $filename = $basename . $postfix; + $success = !file_exists($filename) && @rename($basename, $filename); + if (!$success) { + @unlink($basename); + } + } while (!$success); + return $filename; + } }
\ No newline at end of file |