[Pkg-owncloud-commits] [owncloud] 38/90: Use the TempManager to handle temporary files

David Prévot taffit at moszumanska.debian.org
Fri Feb 6 21:10:47 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 06bc987bd9da194ed37b12536182652c5bd75d25
Author: Robin Appelman <icewind at owncloud.com>
Date:   Wed Oct 22 17:36:52 2014 +0200

    Use the TempManager to handle temporary files
    
    Conflicts:
    	lib/private/helper.php
---
 cron.php               |   3 +-
 lib/base.php           |   3 +-
 lib/private/helper.php | 121 ++-----------------------------------------------
 3 files changed, 7 insertions(+), 120 deletions(-)

diff --git a/cron.php b/cron.php
index f0acd2f..5c2cb20 100644
--- a/cron.php
+++ b/cron.php
@@ -71,8 +71,7 @@ try {
 	// Handle unexpected errors
 	register_shutdown_function('handleUnexpectedShutdown');
 
-	// Delete temp folder
-	OC_Helper::cleanTmpNoClean();
+	\OC::$server->getTempManager()->cleanOld();
 
 	// Exit if background jobs are disabled!
 	$appmode = OC_BackgroundJob::getExecutionType();
diff --git a/lib/base.php b/lib/base.php
index d653e06..495d753 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -563,7 +563,8 @@ class OC {
 		self::registerLocalAddressBook();
 
 		//make sure temporary files are cleaned up
-		register_shutdown_function(array('OC_Helper', 'cleanTmp'));
+		$tmpManager = \OC::$server->getTempManager();
+		register_shutdown_function(array($tmpManager, 'clean'));
 
 		if (OC_Config::getValue('installed', false) && !self::checkUpgrade(false)) {
 			if (OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') {
diff --git a/lib/private/helper.php b/lib/private/helper.php
index 15cf819..d57373e 100644
--- a/lib/private/helper.php
+++ b/lib/private/helper.php
@@ -25,7 +25,6 @@
  * Collection of useful functions
  */
 class OC_Helper {
-	private static $tmpFiles = array();
 	private static $mimetypeIcons = array();
 	private static $mimetypeDetector;
 	private static $templateManager;
@@ -572,136 +571,24 @@ class OC_Helper {
 	 *
 	 * @param string $postfix
 	 * @return string
+	 * @deprecated Use the TempManager instead
 	 *
 	 * temporary files are automatically cleaned up after the script is finished
 	 */
 	public static function tmpFile($postfix = '') {
-		$file = get_temp_dir() . '/' . md5(time() . rand()) . $postfix;
-		$fh = fopen($file, 'w');
-		if ($fh!==false){
-			fclose($fh);
-			self::$tmpFiles[] = $file;
-		} else {
-			OC_Log::write(
-				'OC_Helper',
-				sprintf(
-					'Can not create a temporary file in directory %s. Check it exists and has correct permissions',
-					get_temp_dir()
-				),
-				OC_Log::WARN
-			);
-			$file = false;
-		}
-		return $file;
-	}
-
-	/**
-	 * move a file to oc-noclean temp dir
-	 *
-	 * @param string $filename
-	 * @return mixed
-	 *
-	 */
-	public static function moveToNoClean($filename = '') {
-		if ($filename == '') {
-			return false;
-		}
-		$tmpDirNoClean = get_temp_dir() . '/oc-noclean/';
-		if (!file_exists($tmpDirNoClean) || !is_dir($tmpDirNoClean)) {
-			if (file_exists($tmpDirNoClean)) {
-				unlink($tmpDirNoClean);
-			}
-			mkdir($tmpDirNoClean);
-		}
-		$newname = $tmpDirNoClean . basename($filename);
-		if (rename($filename, $newname)) {
-			return $newname;
-		} else {
-			return false;
-		}
+		return \OC::$server->getTempManager()->getTemporaryFile($postfix);
 	}
 
 	/**
 	 * create a temporary folder with an unique filename
 	 *
 	 * @return string
+	 * @deprecated Use the TempManager instead
 	 *
 	 * temporary files are automatically cleaned up after the script is finished
 	 */
 	public static function tmpFolder() {
-		$path = get_temp_dir() . '/' . md5(time() . rand());
-		mkdir($path);
-		self::$tmpFiles[] = $path;
-		return $path . '/';
-	}
-
-	/**
-	 * remove all files created by self::tmpFile
-	 */
-	public static function cleanTmp() {
-		$leftoversFile = get_temp_dir() . '/oc-not-deleted';
-		if (file_exists($leftoversFile)) {
-			$leftovers = file($leftoversFile);
-			foreach ($leftovers as $file) {
-				try {
-					self::rmdirr($file);
-				} catch (UnexpectedValueException $ex) {
-					// not really much we can do here anymore
-					if (!is_null(\OC::$server)) {
-						$message = $ex->getMessage();
-						\OC::$server->getLogger()->error("Error deleting file/folder: $file - Reason: $message",
-							array('app' => 'core'));
-					}
-				}
-			}
-			unlink($leftoversFile);
-		}
-
-		foreach (self::$tmpFiles as $file) {
-			if (file_exists($file)) {
-				try {
-					if (!self::rmdirr($file)) {
-						file_put_contents($leftoversFile, $file . "\n", FILE_APPEND);
-					}
-				} catch (UnexpectedValueException $ex) {
-					// not really much we can do here anymore
-					if (!is_null(\OC::$server)) {
-						$message = $ex->getMessage();
-						\OC::$server->getLogger()->error("Error deleting file/folder: $file - Reason: $message",
-							array('app' => 'core'));
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * remove all files in PHP /oc-noclean temp dir
-	 */
-	public static function cleanTmpNoClean() {
-		$tmpDirNoCleanName=get_temp_dir() . '/oc-noclean/';
-		if(file_exists($tmpDirNoCleanName) && is_dir($tmpDirNoCleanName)) {
-			$files=scandir($tmpDirNoCleanName);
-			foreach($files as $file) {
-				$fileName = $tmpDirNoCleanName . $file;
-				if (!\OC\Files\Filesystem::isIgnoredDir($file) && filemtime($fileName) + 600 < time()) {
-					unlink($fileName);
-				}
-			}
-			// if oc-noclean is empty delete it
-			$isTmpDirNoCleanEmpty = true;
-			$tmpDirNoClean = opendir($tmpDirNoCleanName);
-			if(is_resource($tmpDirNoClean)) {
-				while (false !== ($file = readdir($tmpDirNoClean))) {
-					if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
-						$isTmpDirNoCleanEmpty = false;
-					}
-				}
-			}
-			if ($isTmpDirNoCleanEmpty) {
-				rmdir($tmpDirNoCleanName);
-			}
-		}
+		return \OC::$server->getTempManager()->getTemporaryFolder();
 	}
 
 	/**

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list