diff --git a/lib/base.php b/lib/base.php index 32dcfd7825825959446e6f239e13c2699619c0eb..7783b4c6380d8106a68d07f56dfd2e6e416076f6 100644 --- a/lib/base.php +++ b/lib/base.php @@ -313,6 +313,9 @@ class OC{ // Last part: connect some hooks OC_HOOK::connect('OC_User', 'post_createUser', 'OC_Connector_Sabre_Principal', 'addPrincipal'); OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Connector_Sabre_Principal', 'deletePrincipal'); + + //make sure temporary files are cleaned up + register_shutdown_function(array('OC_Helper','cleanTmp')); } } diff --git a/lib/helper.php b/lib/helper.php index 1ea0a55f469dc7d1c7a2dda91c290e0ff46f1095..3c76d38328b937a1f284719b27cfccf3d487c847 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -26,6 +26,7 @@ */ class OC_Helper { private static $mimetypes=array(); + private static $tmpFiles=array(); /** * @brief Creates an url @@ -415,4 +416,28 @@ class OC_Helper { } return $count; } + + /** + * create a temporary file with an unique filename + * @param string postfix + * @return string + * + * temporary files are automatically cleaned up after the script is finished + */ + public static function tmpFile($postfix=''){ + $file=tempnam(get_temp_dir(),'OC_TMP_').$postfix; + self::$tmpFiles[]=$file; + return $file; + } + + /** + * remove all files created by self::tmpFile + */ + public static function cleanTmp(){ + foreach(self::$tmpFiles as $file){ + if(file_exists($file)){ + unlink($file); + } + } + } }