From 53bb89824deaf97095acf6bcc2997aa7141dd573 Mon Sep 17 00:00:00 2001
From: Bjoern Schiessle <schiessle@owncloud.com>
Date: Mon, 12 Aug 2013 17:25:27 +0200
Subject: [PATCH] check if some encrypted files are left after the app was
 disabled and warn the user

---
 apps/files/index.php           |  1 +
 apps/files/js/files.js         | 14 ++++++++++++++
 apps/files/templates/index.php |  1 +
 lib/public/util.php            |  8 ++++++++
 lib/util.php                   | 17 +++++++++++++++++
 settings/personal.php          |  8 +-------
 6 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/apps/files/index.php b/apps/files/index.php
index 2f00539150..57171ac3b5 100644
--- a/apps/files/index.php
+++ b/apps/files/index.php
@@ -143,5 +143,6 @@ if ($needUpgrade) {
 	$tmpl->assign('usedSpacePercent', (int)$storageInfo['relative']);
 	$tmpl->assign('isPublic', false);
 	$tmpl->assign('publicUploadEnabled', $publicUploadEnabled);
+	$tmpl->assign("encryptedFiles", \OCP\Util::encryptedFiles());
 	$tmpl->printPage();
 }
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 98fc53b71a..d6886fc17e 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -81,9 +81,23 @@ Files={
 		if (usedSpacePercent > 90) {
 			OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent}));
 		}
+	},
+
+	displayEncryptionWarning: function() {
+
+		if (!OC.Notification.isHidden()) {
+			return;
+		}
+
+		var encryptedFiles = $('#encryptedFiles').val();
+		if (encryptedFiles === '1') {
+			OC.Notification.show(t('files_encryption', 'Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files.', "www.schiessle.org"));
+			return;
+		}
 	}
 };
 $(document).ready(function() {
+	Files.displayEncryptionWarning();
 	Files.bindKeyboardShortcuts(document, jQuery);
 	$('#fileList tr').each(function(){
 		//little hack to set unescape filenames in attribute
diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php
index e073160936..72bc1e937c 100644
--- a/apps/files/templates/index.php
+++ b/apps/files/templates/index.php
@@ -121,3 +121,4 @@
 <!-- config hints for javascript -->
 <input type="hidden" name="allowZipDownload" id="allowZipDownload" value="<?php p($_['allowZipDownload']); ?>" />
 <input type="hidden" name="usedSpacePercent" id="usedSpacePercent" value="<?php p($_['usedSpacePercent']); ?>" />
+<input type="hidden" name="encryptedFiles" id="encryptedFiles" value="<?php $_['encryptedFiles'] ? p('1') : p('0'); ?>" />
diff --git a/lib/public/util.php b/lib/public/util.php
index 693805946e..b33f07b55e 100644
--- a/lib/public/util.php
+++ b/lib/public/util.php
@@ -122,6 +122,14 @@ class Util {
 		return(\OC_Util::formatDate( $timestamp, $dateOnly ));
 	}
 
+	/**
+	 * @brief check if some encrypted files are stored
+	 * @return bool
+	 */
+	public static function encryptedFiles() {
+		return \OC_Util::encryptedFiles();
+	}
+	
 	/**
 	 * @brief Creates an absolute url
 	 * @param string $app app
diff --git a/lib/util.php b/lib/util.php
index 2586ad2832..cc432af62a 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -312,6 +312,23 @@ class OC_Util {
 		return $errors;
 	}
 
+	/**
+	 * @brief check if there are still some encrypted files stored
+	 * @return boolean
+	 */
+	public static function encryptedFiles() {
+		//check if encryption was enabled in the past
+		$encryptedFiles = false;
+		if (OC_App::isEnabled('files_encryption') === false) {
+			$view = new OC\Files\View('/' . OCP\User::getUser());
+			if ($view->file_exists('/files_encryption/keyfiles')) {
+				$encryptedFiles = true;
+			}
+		}
+		
+		return $encryptedFiles;
+	}
+	
 	/**
 	* Check for correct file permissions of data directory
 	* @return array arrays with error messages and hints
diff --git a/settings/personal.php b/settings/personal.php
index bad19ba03c..e69898f6f8 100644
--- a/settings/personal.php
+++ b/settings/personal.php
@@ -25,13 +25,7 @@ $userLang=OC_Preferences::getValue( OC_User::getUser(), 'core', 'lang', OC_L10N:
 $languageCodes=OC_L10N::findAvailableLanguages();
 
 //check if encryption was enabled in the past
-$enableDecryptAll = false;
-if (OC_App::isEnabled('files_encryption') === false) {
-	$view = new OC\Files\View('/'.OCP\User::getUser());
-	if($view->file_exists('/files_encryption/keyfiles')) {
-		$enableDecryptAll = true;
-	}
-}
+$enableDecryptAll = OC_Util::encryptedFiles();
 
 // array of common languages
 $commonlangcodes = array(
-- 
GitLab