From d235c4833f8fb8bb0b077276e2819cfbd2918313 Mon Sep 17 00:00:00 2001
From: Bjoern Schiessle <bjoern@schiessle.org>
Date: Wed, 2 Nov 2016 12:03:52 +0100
Subject: remove the 'shareapi_allow_mail_notification' setting

Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
---
 apps/files_sharing/appinfo/info.xml        |  2 +-
 apps/files_sharing/appinfo/update.php      |  6 +++++-
 apps/files_sharing/lib/Migration.php       | 15 ++++++++++++++-
 apps/files_sharing/tests/MigrationTest.php | 28 +++++++++++++++++++++++++++-
 core/js/tests/specs/sharedialogviewSpec.js |  1 -
 5 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index 133119feabd..cc97f65a5e6 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -10,7 +10,7 @@ Turning the feature off removes shared files and folders on the server for all s
 	<licence>AGPL</licence>
 	<author>Michael Gapczynski, Bjoern Schiessle</author>
 	<default_enable/>
-	<version>1.1.0</version>
+	<version>1.1.1</version>
 	<types>
 		<filesystem/>
 	</types>
diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index d53d878881e..ed0d7732b37 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -26,7 +26,11 @@ $installedVersion = \OC::$server->getConfig()->getAppValue('files_sharing', 'ins
 
 // Migration OC8.2 -> OC9
 if (version_compare($installedVersion, '0.9.1', '<')) {
-	$m = new Migration(\OC::$server->getDatabaseConnection());
+	$m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig());
 	$m->removeReShares();
 	$m->updateInitiatorInfo();
 }
+
+if (version_compare($installedVersion, '1.1.1', '<')) {
+	$m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig());
+}
diff --git a/apps/files_sharing/lib/Migration.php b/apps/files_sharing/lib/Migration.php
index 9c971bf7f49..605a11fd22c 100644
--- a/apps/files_sharing/lib/Migration.php
+++ b/apps/files_sharing/lib/Migration.php
@@ -27,6 +27,7 @@ namespace OCA\Files_Sharing;
 
 use Doctrine\DBAL\Connection;
 use OCP\ICache;
+use OCP\IConfig;
 use OCP\IDBConnection;
 use OC\Cache\CappedMemoryCache;
 
@@ -41,14 +42,18 @@ class Migration {
 	/** @var IDBConnection */
 	private $connection;
 
+	/** @var  IConfig */
+	private $config;
+
 	/** @var  ICache with all shares we already saw */
 	private $shareCache;
 
 	/** @var string */
 	private $table = 'share';
 
-	public function __construct(IDBConnection $connection) {
+	public function __construct(IDBConnection $connection, IConfig $config) {
 		$this->connection = $connection;
+		$this->config = $config;
 
 		// We cache up to 10k share items (~20MB)
 		$this->shareCache = new CappedMemoryCache(10000);
@@ -110,6 +115,14 @@ class Migration {
 		}
 	}
 
+	/**
+	 * this was dropped for Nextcloud 11 in favour of share by mail
+	 */
+	public function removeSendMailOption() {
+		$this->config->deleteAppValue('core', 'shareapi_allow_mail_notification');
+		$this->config->deleteAppValue('core', 'shareapi_allow_public_notification');
+	}
+
 	/**
 	 * find the owner of a re-shared file/folder
 	 *
diff --git a/apps/files_sharing/tests/MigrationTest.php b/apps/files_sharing/tests/MigrationTest.php
index 7d6ca7840ed..572f64da743 100644
--- a/apps/files_sharing/tests/MigrationTest.php
+++ b/apps/files_sharing/tests/MigrationTest.php
@@ -39,6 +39,9 @@ class MigrationTest extends TestCase {
 	/** @var \OCP\IDBConnection */
 	private $connection;
 
+	/** @var \OCP\IConfig  */
+	private $config;
+
 	/** @var Migration */
 	private $migration;
 
@@ -48,7 +51,8 @@ class MigrationTest extends TestCase {
 		parent::setUp();
 
 		$this->connection = \OC::$server->getDatabaseConnection();
-		$this->migration = new Migration($this->connection);
+		$this->config = \OC::$server->getConfig();
+		$this->migration = new Migration($this->connection, $this->config);
 
 		$this->cleanDB();
 	}
@@ -351,4 +355,26 @@ class MigrationTest extends TestCase {
 		$stmt->closeCursor();
 		$this->assertEquals(1001, $i);
 	}
+
+	/**
+	 * test that we really remove the "shareapi_allow_mail_notification" setting only
+	 */
+	public function testRemoveSendMailOption() {
+		$this->config->setAppValue('core', 'shareapi_setting1', 'dummy-value');
+		$this->config->setAppValue('core', 'shareapi_allow_mail_notification', 'no');
+		$this->config->setAppValue('core', 'shareapi_allow_public_notification', 'no');
+
+		$this->migration->removeSendMailOption();
+
+		$this->assertNull(
+			$this->config->getAppValue('core', 'shareapi_allow_mail_notification', null)
+		);
+		$this->assertNull(
+			$this->config->getAppValue('core', 'shareapi_allow_public_notification', null)
+		);
+
+		$this->assertSame('dummy-value',
+			$this->config->getAppValue('core', 'shareapi_setting1', null)
+		);
+	}
 }
diff --git a/core/js/tests/specs/sharedialogviewSpec.js b/core/js/tests/specs/sharedialogviewSpec.js
index 8acaf62e2e7..6e86cb8eff7 100644
--- a/core/js/tests/specs/sharedialogviewSpec.js
+++ b/core/js/tests/specs/sharedialogviewSpec.js
@@ -41,7 +41,6 @@ describe('OC.Share.ShareDialogView', function() {
 	beforeEach(function() {
 		// horrible parameters
 		$('#testArea').append('<input id="allowShareWithLink" type="hidden" value="yes">');
-		$('#testArea').append('<input id="mailPublicNotificationEnabled" name="mailPublicNotificationEnabled" type="hidden" value="yes">');
 		$container = $('#shareContainer');
 		/* jshint camelcase:false */
 		oldAppConfig = _.extend({}, oc_appconfig.core);
-- 
cgit v1.2.3