Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
die_coolen_jungs
our_own_cloud_project
Commits
a3999036
Commit
a3999036
authored
Apr 16, 2013
by
Björn Schießle
Browse files
improved free space calculation if no quota is set, discussed in #2936
parent
f3c06ae4
Changes
1
Hide whitespace changes
Inline
Side-by-side
apps/files_trashbin/lib/trash.php
View file @
a3999036
...
...
@@ -104,27 +104,8 @@ class Trashbin {
}
else
{
\
OC_Log
::
write
(
'files_trashbin'
,
'Couldn\'t move '
.
$file_path
.
' to the trash bin'
,
\
OC_log
::
ERROR
);
}
// get available disk space for user
$quota
=
\
OC_Preferences
::
getValue
(
$user
,
'files'
,
'quota'
);
if
(
$quota
===
null
||
$quota
===
'default'
)
{
$quota
=
\
OC_Appconfig
::
getValue
(
'files'
,
'default_quota'
);
}
if
(
$quota
===
null
||
$quota
===
'none'
)
{
$quota
=
\
OC\Files\Filesystem
::
free_space
(
'/'
)
/
count
(
\
OCP\User
::
getUsers
());
}
else
{
$quota
=
\
OCP\Util
::
computerFileSize
(
$quota
);
}
// calculate available space for trash bin
$rootInfo
=
$view
->
getFileInfo
(
'/files'
);
$free
=
$quota
-
$rootInfo
[
'size'
];
// remaining free space for user
if
(
$free
>
0
)
{
$availableSpace
=
(
$free
*
self
::
DEFAULTMAXSIZE
/
100
)
-
$trashbinSize
;
// how much space can be used for versions
}
else
{
$availableSpace
=
$free
-
$trashbinSize
;
}
$trashbinSize
-=
self
::
expire
(
$availableSpace
);
$trashbinSize
-=
self
::
expire
(
$trashbinSize
);
self
::
setTrashbinSize
(
$user
,
$trashbinSize
);
...
...
@@ -352,14 +333,53 @@ class Trashbin {
return
false
;
}
/**
* calculate remaining free space for trash bin
*
* @param $trashbinSize current size of the trash bin
* @return available free space for trash bin
*/
private
static
function
calculateFreeSpace
(
$trashbinSize
)
{
$softQuota
=
true
;
$user
=
\
OCP\User
::
getUser
();
$quota
=
\
OC_Preferences
::
getValue
(
$user
,
'files'
,
'quota'
);
$view
=
new
\
OC\Files\View
(
'/'
.
$user
);
if
(
$quota
===
null
||
$quota
===
'default'
)
{
$quota
=
\
OC_Appconfig
::
getValue
(
'files'
,
'default_quota'
);
}
if
(
$quota
===
null
||
$quota
===
'none'
)
{
$quota
=
\
OC\Files\Filesystem
::
free_space
(
'/'
);
$softQuota
=
false
;
}
else
{
$quota
=
\
OCP\Util
::
computerFileSize
(
$quota
);
}
// calculate available space for trash bin
// subtract size of files and current trash bin size from quota
if
(
$softQuota
)
{
$rootInfo
=
$view
->
getFileInfo
(
'/files/'
);
$free
=
$quota
-
$rootInfo
[
'size'
];
// remaining free space for user
if
(
$free
>
0
)
{
$availableSpace
=
(
$free
*
self
::
DEFAULTMAXSIZE
/
100
)
-
$trashbinSize
;
// how much space can be used for versions
}
else
{
$availableSpace
=
$free
-
$trashbinSize
;
}
}
else
{
$availableSpace
=
$quota
;
}
return
$availableSpace
;
}
/**
* clean up the trash bin
* @param
max. available disk space for
trashbin
* @param
current size of the
trash
bin
*/
private
static
function
expire
(
$
availableSpac
e
)
{
private
static
function
expire
(
$
trashbinSiz
e
)
{
$user
=
\
OCP\User
::
getUser
();
$view
=
new
\
OC\Files\View
(
'/'
.
$user
);
$availableSpace
=
self
::
calculateFreeSpace
(
$trashbinSize
);
$size
=
0
;
$query
=
\
OC_DB
::
prepare
(
'SELECT `location`,`type`,`id`,`timestamp` FROM `*PREFIX*files_trash` WHERE `user`=?'
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment