From b3834b49c3a98e5b7adbb64983f489f0d992c83c Mon Sep 17 00:00:00 2001
From: Florin Peter <github@florin-peter.de>
Date: Thu, 30 May 2013 22:05:52 +0200
Subject: [PATCH] prevent files_versions from calling file proxy which calls
 files_encryption and do unnecessary load and file operations

---
 apps/files_versions/lib/versions.php | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index 5fdbef2774..4beb9e0fe5 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -113,8 +113,16 @@ class Storage {
 				mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
 			}
 
+			// disable proxy to prevent multiple fopen calls
+			$proxyStatus = \OC_FileProxy::$enabled;
+			\OC_FileProxy::$enabled = false;
+
 			// store a new version of a file
 			$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
+
+			// reset proxy state
+			\OC_FileProxy::$enabled = $proxyStatus;
+
 			$versionsSize = self::getVersionsSize($uid);
 			if (  $versionsSize === false || $versionsSize < 0 ) {
 				$versionsSize = self::calculateSize($uid);
@@ -195,7 +203,16 @@ class Storage {
 			//first create a new version
 			$version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename);
 			if ( !$users_view->file_exists($version)) {
+
+				// disable proxy to prevent multiple fopen calls
+				$proxyStatus = \OC_FileProxy::$enabled;
+				\OC_FileProxy::$enabled = false;
+
 				$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
+
+				// reset proxy state
+				\OC_FileProxy::$enabled = $proxyStatus;
+
 				$versionCreated = true;
 			}
 
-- 
GitLab