ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilDiskQuotaHandler.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
13{
22 public static function handleUpdatedSourceObject($a_src_obj_type, $a_src_obj_id, $a_src_filesize, $a_owner_obj_ids = null, $a_is_prtf = false)
23 {
24 global $ilDB;
25
26 $done = array();
27
28 if(is_array($a_owner_obj_ids) && sizeof($a_owner_obj_ids) && (int)$a_src_filesize > 0)
29 {
30 // we are (currently) only interested in personal workspace objects
31
32 if(!$a_is_prtf)
33 {
34 $set = $ilDB->query("SELECT DISTINCT(od.owner)".
35 " FROM object_data od".
36 " JOIN object_reference_ws ref ON (ref.obj_id = od.obj_id)".
37 " JOIN tree_workspace t ON (t.child = ref.wsp_id)".
38 " WHERE ".$ilDB->in("od.obj_id", $a_owner_obj_ids, "", "integer").
39 " AND t.tree = od.owner");
40 }
41 else
42 {
43 $set = $ilDB->query("SELECT DISTINCT(od.owner)".
44 " FROM object_data od".
45 " JOIN usr_portfolio prtf ON (prtf.id = od.obj_id)".
46 " WHERE ".$ilDB->in("od.obj_id", $a_owner_obj_ids, "", "integer"));
47 }
48 while($row = $ilDB->fetchAssoc($set))
49 {
50 $done[] = $row["owner"];
51
53 $row["owner"],
54 $a_src_obj_type,
55 $a_src_obj_id,
56 (int)$a_src_filesize
57 );
58 }
59 }
60
61 // delete obsolete entries
62 $existing = self::getOwnersBySourceObject($a_src_obj_type, $a_src_obj_id);
63 $existing = array_diff($existing, $done);
64 if(sizeof($existing))
65 {
66 foreach($existing as $owner)
67 {
68 self::deleteEntry($owner, $a_src_obj_type, $a_src_obj_id);
69 }
70 }
71 }
72
80 protected static function deleteEntry($a_owner_id, $a_src_obj_type, $a_src_obj_id)
81 {
82 global $ilDB;
83
84 $ilDB->manipulate("DELETE FROM il_disk_quota".
85 " WHERE owner_id = ".$ilDB->quote($a_owner_id, "integer").
86 " AND src_type = ".$ilDB->quote($a_src_obj_type, "text").
87 " AND src_obj_id = ".$ilDB->quote($a_src_obj_id, "integer"));
88 }
89
95 public static function deleteByOwner($a_owner_id)
96 {
97 global $ilDB;
98
99 $ilDB->manipulate("DELETE FROM il_disk_quota".
100 " WHERE owner_id = ".$ilDB->quote($a_owner_id, "integer"));
101 }
102
110 protected static function getOwnersBySourceObject($a_src_obj_type, $a_src_obj_id)
111 {
112 global $ilDB;
113
114 $res = array();
115
116 $set = $ilDB->query("SELECT owner_id".
117 " FROM il_disk_quota".
118 " WHERE src_type = ".$ilDB->quote($a_src_obj_type, "text").
119 " AND src_obj_id = ".$ilDB->quote($a_src_obj_id, "integer"));
120 while($row = $ilDB->fetchAssoc($set))
121 {
122 $res[] = $row["owner_id"];
123 }
124
125 return $res;
126 }
127
134 protected static function getSourceObjectsByOwner($a_owner_id)
135 {
136 global $ilDB;
137
138 $res = array();
139
140 $set = $ilDB->query("SELECT src_type, src_obj_id".
141 " FROM il_disk_quota".
142 " WHERE owner_id = ".$ilDB->quote($a_owner_id, "integer"));
143 while($row = $ilDB->fetchAssoc($set))
144 {
145 $res[$row["src_type"]][] = $row["src_obj_id"];
146 }
147
148 return $res;
149 }
150
159 protected static function handleEntry($a_owner_id, $a_src_obj_type, $a_src_obj_id, $a_src_filesize)
160 {
161 global $ilDB;
162
163 $existing = self::getSourceObjectsByOwner($a_owner_id);
164
165 // update
166 if($existing &&
167 isset($existing[$a_src_obj_type]) &&
168 in_array($a_src_obj_id, $existing[$a_src_obj_type]))
169 {
170 $ilDB->manipulate("UPDATE il_disk_quota".
171 " SET src_size = ".$ilDB->quote($a_src_filesize, "integer").
172 " WHERE owner_id = ".$ilDB->quote($a_owner_id, "integer").
173 " AND src_type = ".$ilDB->quote($a_src_obj_type, "text").
174 " AND src_obj_id = ".$ilDB->quote($a_src_obj_id, "integer"));
175 }
176 // insert
177 else
178 {
179 $ilDB->manipulate("INSERT INTO il_disk_quota".
180 " (owner_id, src_type, src_obj_id, src_size)".
181 " VALUES (".$ilDB->quote($a_owner_id, "integer").
182 ", ".$ilDB->quote($a_src_obj_type, "text").
183 ", ".$ilDB->quote($a_src_obj_id, "integer").
184 ", ".$ilDB->quote($a_src_filesize, "integer").")");
185 }
186 }
187
194 public static function getFilesizeByOwner($a_owner_id)
195 {
196 global $ilDB;
197
198 $set = $ilDB->query("SELECT sum(src_size) fsize".
199 " FROM il_disk_quota".
200 " WHERE owner_id = ".$ilDB->quote($a_owner_id, "integer"));
201 $row = $ilDB->fetchAssoc($set);
202 return (int)$row["fsize"];
203 }
204
211 public static function getFilesizeByTypeAndOwner($a_owner_id)
212 {
213 global $ilDB;
214
215 $res = array();
216
217 $set = $ilDB->query("SELECT sum(src_size) filesize, src_type, COUNT(*) count".
218 " FROM il_disk_quota".
219 " WHERE owner_id = ".$ilDB->quote($a_owner_id, "integer").
220 " GROUP BY src_type");
221 while($row = $ilDB->fetchAssoc($set))
222 {
223 $res[] = $row;
224 }
225
226 return $res;
227 }
228
229 public static function isUploadPossible($a_additional_size = null)
230 {
231 global $ilUser;
232
233 include_once "Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php";
235 {
236 return true;
237 }
238
239 include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
241 if($a_additional_size)
242 {
243 $usage += $a_additional_size;
244 }
245
246 include_once "Services/WebDAV/classes/class.ilDiskQuotaChecker.php";
248 $quota = $quota["disk_quota"];
249
250 // administrator
251 if(is_infinite($quota))
252 {
253 return true;
254 }
255
256 return $usage < $quota;
257 }
258
259 public static function getStatusLegend()
260 {
261 global $ilUser, $lng;
262
263 include_once "Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php";
265 {
266 return;
267 }
268
269 include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
271
272 include_once "Services/WebDAV/classes/class.ilDiskQuotaChecker.php";
274 $quota = $quota["disk_quota"];
275
276 // administrator
277 if(is_infinite($quota) || !(int)$quota)
278 {
279 return;
280 }
281
282 $lng->loadLanguageModule("file");
283 return sprintf($lng->txt("personal_workspace_quota_status_legend"),
284 ilFormat::formatSize($usage),
285 ilFormat::formatSize($quota),
286 $quota ? round($usage/$quota*100) : 0);
287 }
288}
289
290?>
static _lookupPersonalWorkspaceDiskQuota($a_user_id)
Class ilDiskQuotaHandler.
static handleEntry($a_owner_id, $a_src_obj_type, $a_src_obj_id, $a_src_filesize)
Update/create owner-related entry of source object.
static deleteEntry($a_owner_id, $a_src_obj_type, $a_src_obj_id)
Delete entry for owner and source object.
static deleteByOwner($a_owner_id)
Delete all entries for owner.
static getFilesizeByTypeAndOwner($a_owner_id)
Get current storage size for owner (grouped by type)
static isUploadPossible($a_additional_size=null)
static getSourceObjectsByOwner($a_owner_id)
Get all source objects for owner.
static handleUpdatedSourceObject($a_src_obj_type, $a_src_obj_id, $a_src_filesize, $a_owner_obj_ids=null, $a_is_prtf=false)
Find and update/create all related entries for source object.
static getFilesizeByOwner($a_owner_id)
Get current storage size for owner.
static getOwnersBySourceObject($a_src_obj_type, $a_src_obj_id)
Get owner ids by source object.
static formatSize($size, $a_mode='short', $a_lng=null)
Returns the specified file size value in a human friendly form.
global $lng
Definition: privfeed.php:40
global $ilDB
global $ilUser
Definition: imgupload.php:15