setRetentionObligation($config->getSystemValue('trashbin_retention_obligation', 'auto')); } public function setRetentionObligation(string $obligation) { $this->retentionObligation = $obligation; if ($this->retentionObligation !== 'disabled') { $this->parseRetentionObligation(); } } /** * Is trashbin expiration enabled * @return bool */ public function isEnabled() { return $this->retentionObligation !== 'disabled'; } /** * Check if given timestamp in expiration range * @param int $timestamp * @param bool $quotaExceeded * @return bool */ public function isExpired($timestamp, $quotaExceeded = false) { // No expiration if disabled if (!$this->isEnabled()) { return false; } // Purge to save space (if allowed) if ($quotaExceeded && $this->canPurgeToSaveSpace) { return true; } $time = $this->timeFactory->getTime(); // Never expire dates in future e.g. misconfiguration or negative time // adjustment if ($time < $timestamp) { return false; } // Purge as too old if ($this->maxAge !== self::NO_OBLIGATION) { $maxTimestamp = $time - ($this->maxAge * 86400); $isOlderThanMax = $timestamp < $maxTimestamp; } else { $isOlderThanMax = false; } if ($this->minAge !== self::NO_OBLIGATION) { // older than Min obligation and we are running out of quota? $minTimestamp = $time - ($this->minAge * 86400); $isMinReached = ($timestamp < $minTimestamp) && $quotaExceeded; } else { $isMinReached = false; } return $isOlderThanMax || $isMinReached; } /** * @return bool|int */ public function getMaxAgeAsTimestamp() { $maxAge = false; if ($this->isEnabled() && $this->maxAge !== self::NO_OBLIGATION) { $time = $this->timeFactory->getTime(); $maxAge = $time - ($this->maxAge * 86400); } return $maxAge; } private function parseRetentionObligation() { $splitValues = explode(',', $this->retentionObligation); if (!isset($splitValues[0])) { $minValue = self::DEFAULT_RETENTION_OBLIGATION; } else { $minValue = trim($splitValues[0]); } if (!isset($splitValues[1]) && $minValue === 'auto') { $maxValue = 'auto'; } elseif (!isset($splitValues[1])) { $maxValue = self::DEFAULT_RETENTION_OBLIGATION; } else { $maxValue = trim($splitValues[1]); } if ($minValue === 'auto' && $maxValue === 'auto') { // Default: Keep for 30 days but delete anytime if space needed $this->minAge = self::DEFAULT_RETENTION_OBLIGATION; $this->maxAge = self::NO_OBLIGATION; $this->canPurgeToSaveSpace = true; } elseif ($minValue !== 'auto' && $maxValue === 'auto') { // Keep for X days but delete anytime if space needed $this->minAge = (int)$minValue; $this->maxAge = self::NO_OBLIGATION; $this->canPurgeToSaveSpace = true; } elseif ($minValue === 'auto' && $maxValue !== 'auto') { // Delete anytime if space needed, Delete all older than max automatically $this->minAge = self::NO_OBLIGATION; $this->maxAge = (int)$maxValue; $this->canPurgeToSaveSpace = true; } elseif ($minValue !== 'auto' && $maxValue !== 'auto') { // Delete all older than max OR older than min if space needed // Max < Min as per https://github.com/owncloud/core/issues/16300 if ($maxValue < $minValue) { $maxValue = $minValue; } $this->minAge = (int)$minValue; $this->maxAge = (int)$maxValue; $this->canPurgeToSaveSpace = false; } } } ption> Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/core/js/shareconfigmodel.js
blob: 45c89d9e0798285ff34070ca22dd416a05bf68f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
 * Copyright (c) 2015
 *
 * This file is licensed under the Affero General Public License version 3
 * or later.
 *
 * See the COPYING-README file.
 *
 */

/* global moment, oc_appconfig, oc_config */

(function() {
	if (!OC.Share) {
		OC.Share = {};
		OC.Share.Types = {};
	}

	// FIXME: the config model should populate its own model attributes based on
	// the old DOM-based config
	var ShareConfigModel = OC.Backbone.Model.extend({
		defaults: {
			publicUploadEnabled: false,
			enforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink,
			enableLinkPasswordByDefault: oc_appconfig.core.enableLinkPasswordByDefault,
			isDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true,
			isDefaultExpireDateEnabled: oc_appconfig.core.defaultExpireDateEnabled === true,
			isRemoteShareAllowed: oc_appconfig.core.remoteShareAllowed,
			isMailShareAllowed: oc_appconfig.shareByMailEnabled !== undefined,
			defaultExpireDate: oc_appconfig.core.defaultExpireDate,
			isResharingAllowed: oc_appconfig.core.resharingAllowed,
			isPasswordForMailSharesRequired: (oc_appconfig.shareByMail === undefined) ? false : oc_appconfig.shareByMail.enforcePasswordProtection,
			allowGroupSharing: oc_appconfig.core.allowGroupSharing
		},

		/**
		 * @returns {boolean}
		 */
		isPublicUploadEnabled: function() {
			var publicUploadEnabled = $('#filestable').data('allow-public-upload');
			return publicUploadEnabled === 'yes';
		},

		/**
		 * @returns {boolean}
		 */
		isShareWithLinkAllowed: function() {
			return $('#allowShareWithLink').val() === 'yes';
		},

		/**
		 * @returns {string}
		 */
		getFederatedShareDocLink: function() {
			return oc_appconfig.core.federatedCloudShareDoc;
		},

		getDefaultExpirationDateString: function () {
			var expireDateString = '';
			if (this.get('isDefaultExpireDateEnabled')) {
				var date = moment.utc();
				var expireAfterDays = this.get('defaultExpireDate');
				date.add(expireAfterDays, 'days');
				expireDateString = date.format('YYYY-MM-DD 00:00:00');
			}
			return expireDateString;
		}
	});


	OC.Share.ShareConfigModel = ShareConfigModel;
})();