summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers/system.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/helpers/system.php')
-rw-r--r--modules/gallery/helpers/system.php32
1 files changed, 30 insertions, 2 deletions
diff --git a/modules/gallery/helpers/system.php b/modules/gallery/helpers/system.php
index e1398103..7d56466e 100644
--- a/modules/gallery/helpers/system.php
+++ b/modules/gallery/helpers/system.php
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class system_Core {
+ private static $files_marked_for_deletion = array();
+
/**
* Return the path to an executable version of the named binary, or null.
* The paths are traversed in the following order:
@@ -66,8 +68,10 @@ class system_Core {
* This helper is similar to the built-in tempnam.
* It allows the caller to specify a prefix and an extension.
* It always places the file in TMPPATH.
+ * Unless specified with the $delete_later argument, it will be marked
+ * for deletion at shutdown using system::delete_later.
*/
- static function temp_filename($prefix="", $extension="") {
+ static function temp_filename($prefix="", $extension="", $delete_later=true) {
do {
$basename = tempnam(TMPPATH, $prefix);
if (!$basename) {
@@ -79,6 +83,30 @@ class system_Core {
@unlink($basename);
}
} while (!$success);
+
+ if ($delete_later) {
+ system::delete_later($filename);
+ }
+
return $filename;
}
-} \ No newline at end of file
+
+ /**
+ * Mark a file for deletion at shutdown time. This is useful for temp files, where we can delay
+ * the deletion time until shutdown to keep page load time quick.
+ */
+ static function delete_later($filename) {
+ self::$files_marked_for_deletion[] = $filename;
+ }
+
+ /**
+ * Delete all files marked using system::delete_later. This is called at gallery shutdown.
+ */
+ static function delete_marked_files() {
+ foreach (self::$files_marked_for_deletion as $filename) {
+ // We want to suppress all errors, as it's possible that some of these
+ // files may have been deleted/moved before we got here.
+ @unlink($filename);
+ }
+ }
+}