aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_trashbin/lib/trashbin.php5
-rw-r--r--apps/files_versions/lib/storage.php6
-rw-r--r--apps/provisioning_api/lib/users.php2
-rw-r--r--apps/user_ldap/lib/user/user.php2
-rw-r--r--lib/private/server.php4
-rw-r--r--lib/private/user/user.php39
-rw-r--r--lib/private/util.php6
-rw-r--r--lib/public/iuser.php17
-rw-r--r--settings/ajax/setquota.php2
-rw-r--r--settings/controller/userscontroller.php2
10 files changed, 62 insertions, 23 deletions
diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php
index ca3a8b178a2..c91cfe082fd 100644
--- a/apps/files_trashbin/lib/trashbin.php
+++ b/apps/files_trashbin/lib/trashbin.php
@@ -564,11 +564,8 @@ class Trashbin {
$config = \OC::$server->getConfig();
$softQuota = true;
- $quota = $config->getUserValue($user, 'files', 'quota', null);
+ $quota = \OC::$server->getUserManager()->get($user)->getQuota();
$view = new \OC\Files\View('/' . $user);
- if ($quota === null || $quota === 'default') {
- $quota = $config->getAppValue('files', 'default_quota', null);
- }
if ($quota === null || $quota === 'none') {
$quota = \OC\Files\Filesystem::free_space('/');
$softQuota = false;
diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index 88a4126dabd..47acec1d763 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -653,11 +653,9 @@ class Storage {
$versionsFileview = new \OC\Files\View('/'.$uid.'/files_versions');
// get available disk space for user
+ $user = \OC::$server->getUserManager()->get($uid);
$softQuota = true;
- $quota = $config->getUserValue($uid, 'files', 'quota', null);
- if ( $quota === null || $quota === 'default') {
- $quota = $config->getAppValue('files', 'default_quota', null);
- }
+ $quota = $user->getQuota();
if ( $quota === null || $quota === 'none' ) {
$quota = \OC\Files\Filesystem::free_space('/');
$softQuota = false;
diff --git a/apps/provisioning_api/lib/users.php b/apps/provisioning_api/lib/users.php
index efb10a50865..c609c7bd849 100644
--- a/apps/provisioning_api/lib/users.php
+++ b/apps/provisioning_api/lib/users.php
@@ -278,7 +278,7 @@ class Users {
$quota = \OCP\Util::humanFileSize($quota);
}
}
- $this->config->setUserValue($targetUserId, 'files', 'quota', $quota);
+ $targetUser->setQuota($quota);
break;
case 'password':
$targetUser->setPassword($parameters['_put']['value']);
diff --git a/apps/user_ldap/lib/user/user.php b/apps/user_ldap/lib/user/user.php
index 3bc790a6c10..8b70c9e2374 100644
--- a/apps/user_ldap/lib/user/user.php
+++ b/apps/user_ldap/lib/user/user.php
@@ -456,7 +456,7 @@ class User {
}
}
if(!is_null($quota)) {
- $this->config->setUserValue($this->uid, 'files', 'quota', $quota);
+ $user = $this->userManager->get($this->uid)->setQuota($quota);
}
}
diff --git a/lib/private/server.php b/lib/private/server.php
index 0d1bed4e7d2..9dfae860090 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -244,9 +244,9 @@ class Server extends ServerContainer implements IServerContainer {
$userSession->listen('\OC\User', 'logout', function () {
\OC_Hook::emit('OC_User', 'logout', array());
});
- $userSession->listen('\OC\User', 'changeUser', function ($user) {
+ $userSession->listen('\OC\User', 'changeUser', function ($user, $feature) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'changeUser', array('run' => true, 'user' => $user));
+ \OC_Hook::emit('OC_User', 'changeUser', array('run' => true, 'user' => $user, 'feature' => $feature));
});
return $userSession;
});
diff --git a/lib/private/user/user.php b/lib/private/user/user.php
index 516c1d443c6..0f230d468fd 100644
--- a/lib/private/user/user.php
+++ b/lib/private/user/user.php
@@ -30,6 +30,7 @@
namespace OC\User;
use OC\Hooks\Emitter;
+use OC_Helper;
use OCP\IAvatarManager;
use OCP\IImage;
use OCP\IURLGenerator;
@@ -140,7 +141,7 @@ class User implements IUser {
$result = $this->backend->setDisplayName($this->uid, $displayName);
if ($result) {
$this->displayName = $displayName;
- $this->triggerChange();
+ $this->triggerChange('displayName');
}
return $result !== false;
} else {
@@ -161,7 +162,7 @@ class User implements IUser {
} else {
$this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
}
- $this->triggerChange();
+ $this->triggerChange('eMailAddress');
}
/**
@@ -339,6 +340,36 @@ class User implements IUser {
}
/**
+ * get the users' quota
+ *
+ * @return string
+ * @since 9.0.0
+ */
+ public function getQuota() {
+ $quota = $this->config->getUserValue($this->uid, 'files', 'quota', 'default');
+ if($quota === 'default') {
+ $quota = $this->config->getAppValue('files', 'default_quota', 'none');
+ }
+ return $quota;
+ }
+
+ /**
+ * set the users' quota
+ *
+ * @param string $quota
+ * @return void
+ * @since 9.0.0
+ */
+ public function setQuota($quota) {
+ if($quota !== 'none' and $quota !== 'default') {
+ $quota= OC_Helper::computerFileSize($quota);
+ $quota=OC_Helper::humanFileSize($quota);
+ }
+ $this->config->setUserValue($this->uid, 'files', 'quota', $quota);
+ $this->triggerChange('quota');
+ }
+
+ /**
* get the avatar image if it exists
*
* @param int $size
@@ -386,9 +417,9 @@ class User implements IUser {
return $url;
}
- public function triggerChange() {
+ public function triggerChange($feature) {
if ($this->emitter) {
- $this->emitter->emit('\OC\User', 'changeUser', array($this));
+ $this->emitter->emit('\OC\User', 'changeUser', array($this, $feature));
}
}
diff --git a/lib/private/util.php b/lib/private/util.php
index 28541eff773..6e15d742bed 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -285,11 +285,7 @@ class OC_Util {
* @return int Quota bytes
*/
public static function getUserQuota($user) {
- $config = \OC::$server->getConfig();
- $userQuota = $config->getUserValue($user, 'files', 'quota', 'default');
- if ($userQuota === 'default') {
- $userQuota = $config->getAppValue('files', 'default_quota', 'none');
- }
+ $userQuota = \OC::$server->getUserManager()->get($user)->getQuota();
if($userQuota === 'none') {
return \OCP\Files\FileInfo::SPACE_UNLIMITED;
}else{
diff --git a/lib/public/iuser.php b/lib/public/iuser.php
index 454d45eae76..2d2a2710bf8 100644
--- a/lib/public/iuser.php
+++ b/lib/public/iuser.php
@@ -178,4 +178,21 @@ interface IUser {
* @since 9.0.0
*/
public function setEMailAddress($mailAddress);
+
+ /**
+ * get the users' quota
+ *
+ * @return string
+ * @since 9.0.0
+ */
+ public function getQuota();
+
+ /**
+ * set the users' quota
+ *
+ * @param string $quota
+ * @return void
+ * @since 9.0.0
+ */
+ public function setQuota($quota);
}
diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php
index dbdfb98bc8c..94fd7bd1e2b 100644
--- a/settings/ajax/setquota.php
+++ b/settings/ajax/setquota.php
@@ -56,7 +56,7 @@ if($quota !== 'none' and $quota !== 'default') {
// Return Success story
if($username) {
- \OC::$server->getConfig()->setUserValue($username, 'files', 'quota', $quota);
+ $targetUserObject->setQuota($quota);
}else{//set the default quota when no username is specified
if($quota === 'default') {//'default' as default quota makes no sense
$quota='none';
diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php
index 17629fe924f..3e5455751ab 100644
--- a/settings/controller/userscontroller.php
+++ b/settings/controller/userscontroller.php
@@ -184,7 +184,7 @@ class UsersController extends Controller {
'displayname' => $user->getDisplayName(),
'groups' => (empty($userGroups)) ? $this->groupManager->getUserGroupIds($user) : $userGroups,
'subadmin' => $subAdminGroups,
- 'quota' => $this->config->getUserValue($user->getUID(), 'files', 'quota', 'default'),
+ 'quota' => $user->getQuota(),
'storageLocation' => $user->getHome(),
'lastLogin' => $user->getLastLogin() * 1000,
'backend' => $user->getBackendClassName(),