Quota package
by Paco Soler, University of Valencia, Spain
on the 22:th of June 2006
QUOTA PACKAGE
This package allow to control the number of files and the disk space
used by users and communities. For this we need to add a checkpoint in
the file "file-add.tcl" of the filestorage package (see below).
(Warning: At this stage, quota only works with web uploads, no webdav,
because we have not add any checkpoint at that module. If you add
that checkpoint, report to us.)
The site-admin is who manage the quota policy, accessing from control
panel of any course with the package instancied, and it consists of:
· Set maximum quota value allowed:
MaxQuotaByCommunity: Maximum quota by community in KB.
MaxQuotaByUser: Maximum quota by user in KB.
MaxQuotaByUserFolder: Maximum quota by user folder in KB.
MaxFilesByCommunity: Maximun number of files by community.
MaxFilesByUser: Maximun number of files by user.
MaxFilesByUserFolder: Maximun number of files by comunity.
· Create personalized quotes to users and communities.
· De/Activate quota control (entire site, by community or by user)
If a community has not instancied the package by the course admin, it
use default parameters values. If site-admin create a personalized quota
for it, the package will be instancied automatically for this community.
When a community has instancied the package studens/members can access
to page with information of his detailed quota, and course-admin have
another page with the state community quota.
At quota control we diference two cases:
· Space used at Personal Folder: If the user don't exceed its
personal folder quota he will upload files.
· Space used at Communities by users: If the user don't exceed its
and the community quota he will upload files.
######################################################################################################
CHANGE THIS
max_size -requires {upload_file} {
set n_bytes [file size ${upload_file.tmpfile}]
set max_bytes [ad_parameter "MaximumFileSize"]
if { $n_bytes > $max_bytes } {
ad_complain "Your file is larger than the maximum file size allowed on this system ([util_commify_number $max_bytes] bytes)"
}
}
FOR
max_size -requires {upload_file} {
set n_bytes [file size ${upload_file.tmpfile}]
set max_bytes [ad_parameter "MaximumFileSize"]
if { $n_bytes > $max_bytes } {
ad_complain "Your file is larger than the maximum file size allowed on this system ([util_commify_number $max_bytes] bytes)"
}
#***************************************
set u_id [ad_conn user_id]
set c_id [dotlrn_community::get_community_id]
set kb_size [expr $n_bytes / 1024]
set quota_ctrl [quota::check_quota -community_id $c_id -user_id $u_id -filesize $kb_size]
if {!$quota_ctrl} {
ad_complain "The size of the file execedes the quota that you have assigned or the quota of the group/community"
}
#***************************************
}
######################################################################################################
Paco Soler