diff --git a/lib/base.php b/lib/base.php index 32dcfd7825..7783b4c638 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 1ea0a55f46..3c76d38328 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); + } + } + } }