Consolidate getQuota and setQuota methods in User instance

This commit is contained in:
Arthur Schiwon 2016-02-09 17:16:43 +01:00
parent 4659bf9b4a
commit 3a796d1e15
10 changed files with 62 additions and 23 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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']);

View File

@ -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);
}
}

View File

@ -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;
});

View File

@ -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');
}
/**
@ -338,6 +339,36 @@ class User implements IUser {
return $this->config->getUserValue($this->uid, 'settings', 'email', null);
}
/**
* 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
*
@ -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));
}
}

View File

@ -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{

View File

@ -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);
}

View File

@ -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';

View File

@ -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(),