summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers/system.php
diff options
context:
space:
mode:
authorChad Parry <github@chad.parry.org>2011-04-23 21:19:47 -0600
committerChad Parry <github@chad.parry.org>2011-04-30 17:45:44 -0600
commit5c9a3b3f39f6ff0d5c84c2cf283d27eaebe2e66e (patch)
treec60dd8a696ba3bc3142f86e01a4464d526a2ee1f /modules/gallery/helpers/system.php
parent97400b78153620262120868b37545170416413c9 (diff)
Create a tempnam substitute that safely creates files with a given extension.
Diffstat (limited to 'modules/gallery/helpers/system.php')
-rw-r--r--modules/gallery/helpers/system.php25
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