summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2014-10-22 17:36:52 +0200
committerRobin Appelman <icewind@owncloud.com>2014-10-24 12:18:49 +0200
commit0b9629778393436a7858ccf8211ef44c1e446f61 (patch)
tree38a723b966e96775d8df2f4126b0d129b1e190c9
parent83c74b80ad826af60d894ba91bb1e56fd2005d32 (diff)
downloadnextcloud-server-0b9629778393436a7858ccf8211ef44c1e446f61.tar.gz
nextcloud-server-0b9629778393436a7858ccf8211ef44c1e446f61.zip
Use the TempManager to handle temporary files
-rw-r--r--cron.php3
-rw-r--r--lib/base.php3
-rw-r--r--lib/private/helper.php121
3 files changed, 7 insertions, 120 deletions
diff --git a/cron.php b/cron.php
index 8344e551680..bcbb298de55 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 23f0e594510..4af5b515006 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -577,7 +577,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::$server->getAppConfig()->getValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') {
diff --git a/lib/private/helper.php b/lib/private/helper.php
index 628af14fa08..5b1d31bfc59 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;
@@ -593,136 +592,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() . DIRECTORY_SEPARATOR . md5(time() . rand());
- mkdir($path);
- self::$tmpFiles[] = $path;
- return $path . DIRECTORY_SEPARATOR;
- }
-
- /**
- * 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();
}
/**