ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilFolderDownloadBackgroundTaskHandler Class Reference

Background task handler for folder downloads. More...

+ Inheritance diagram for ilFolderDownloadBackgroundTaskHandler:
+ Collaboration diagram for ilFolderDownloadBackgroundTaskHandler:

Public Member Functions

 __construct ()
 Constructor. More...
 
 getRefIds ()
 Gets the involved reference ids. More...
 
 setRefIds ($a_val)
 Sets the involved reference ids. More...
 
 init ($a_params=null)
 Init background task. More...
 
- Public Member Functions inherited from ilZipBackgroundTaskHandler
 __construct ()
 Constructor. More...
 
 setDeliveryFilename ($a_value)
 Sets the delivery file name. More...
 
 getDeliveryFilename ()
 Gets the delivery file name. More...
 
 getTask ()
 Get current task instance. More...
 
 process ()
 Process the task. More...
 
 cancel ()
 Cancel download. More...
 
 finish ()
 Finish download. More...
 
 deliver ()
 Deliver file. More...
 
 deleteTaskAndFiles ()
 Remove task and its files. More...
 
 getTask ()
 Get current task instance. More...
 
 init ($a_params)
 Init background task. More...
 
 process ()
 Process the task. More...
 
 cancel ()
 Cancel the task. More...
 
 finish ()
 Finish the task. More...
 
 deleteTaskAndFiles ()
 Remove task and its files. More...
 

Static Public Member Functions

static getInstanceFromTask (ilBackgroundTask $a_task)
 Constructor/Factory. More...
 
static isActive ()
 Is folder background download active? More...
 
static getObjectListAction ($a_ref_id)
 Get object list action. More...
 
static initObjectListAction ()
 init js for background download More...
 
static getInstanceFromTask (ilBackgroundTask $a_task)
 Constructor/Factory. More...
 

Protected Member Functions

 gatherFiles ()
 Copy files to target directory. More...
 
 calculateRecursive ($a_ref_ids, &$a_file_count, &$a_file_size)
 Calculates the number and size of the files being downloaded recursively. More...
 
 recurseFolder ($a_ref_id, $a_title, $a_tmpdir, &$a_current_step)
 Copies a folder and its files to the specified temporary directory. More...
 
 copyFile ($a_obj_id, $a_title, $a_tmpdir, &$a_current_step)
 Copies a file to the specified temporary directory. More...
 
 validateAccess ($ref_id)
 Check file access. More...
 
 getDownloadSizeLimit ()
 Get overall download size limit. More...
 
 getFileCountThreshold ()
 Get file count threshold. More...
 
 getTotalSizeThreshold ()
 Get total size threshold. More...
 
- Protected Member Functions inherited from ilZipBackgroundTaskHandler
 setTask (ilBackgroundTask $a_task)
 Set current task instance. More...
 
 gatherFiles ()
 Copy files to target directory. More...
 
 deleteTempFiles ($a_delete_zip=true)
 Deletes the temporary files and folders belonging to this download. More...
 
 getTempFolderPath ()
 Gets the temporary folder path to copy the files and folders to. More...
 
 getTempZipFilePath ()
 Gets the full path of the temporary zip file that gets created. More...
 
 getTempBasePath ()
 Gets the temporary base path for all files and folders related to this download. More...
 

Protected Attributes

 $settings
 
 $ref_ids = array()
 
- Protected Attributes inherited from ilZipBackgroundTaskHandler
 $task
 
 $filename
 

Static Protected Attributes

static $initialized
 

Static Private Member Functions

static renameDuplicateFile ($duplicate_filename)
 bugfix mantis 24309: add a number in round brackets to the filename (in front of the file-type-extension) if there are identically named files in the same folder to prevent an exception being thrown More...
 

Static Private Attributes

static $duplicate_files = array()
 

Detailed Description

Background task handler for folder downloads.

Author
Jörg Lützenkirchen luetz.nosp@m.enki.nosp@m.rchen.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

Definition at line 12 of file class.ilFolderDownloadBackgroundTaskHandler.php.

Constructor & Destructor Documentation

◆ __construct()

ilFolderDownloadBackgroundTaskHandler::__construct ( )

Constructor.

Returns
self

Reimplemented from ilZipBackgroundTaskHandler.

Definition at line 31 of file class.ilFolderDownloadBackgroundTaskHandler.php.

32 {
33 parent::__construct();
34 $this->settings = new ilSetting("fold");
35 }
ILIAS Setting Class.
settings()
Definition: settings.php:2

References settings().

+ Here is the call graph for this function:

Member Function Documentation

◆ calculateRecursive()

ilFolderDownloadBackgroundTaskHandler::calculateRecursive (   $a_ref_ids,
$a_file_count,
$a_file_size 
)
protected

Calculates the number and size of the files being downloaded recursively.

Parameters
array$a_ref_ids
int&$a_file_count
int&$a_file_size

Definition at line 256 of file class.ilFolderDownloadBackgroundTaskHandler.php.

257 {
258 global $DIC;
259 $tree = $DIC['tree'];
260
261 include_once("./Modules/File/classes/class.ilObjFileAccess.php");
262
263 // parse folders
264 foreach ($a_ref_ids as $ref_id) {
265 if (!$this->validateAccess($ref_id)) {
266 continue;
267 }
268
269 // we are only interested in folders and files
270 switch (ilObject::_lookupType($ref_id, true)) {
271 case "fold":
272 // get child objects
273 $subtree = $tree->getChildsByTypeFilter($ref_id, array("fold", "file"));
274 if (count($subtree) > 0) {
275 $child_ref_ids = array();
276 foreach ($subtree as $child) {
277 $child_ref_ids[] = $child["ref_id"];
278 }
279 $this->calculateRecursive($child_ref_ids, $a_file_count, $a_file_size);
280 }
281 break;
282
283 case "file":
285 $a_file_count += 1;
286 break;
287 }
288 }
289 }
calculateRecursive($a_ref_ids, &$a_file_count, &$a_file_size)
Calculates the number and size of the files being downloaded recursively.
static _lookupFileSize($a_id)
Quickly looks up the file size from the database and returns the number of bytes.
static _lookupObjId($a_id)
static _lookupType($a_id, $a_reference=false)
lookup object type
global $DIC
Definition: saml.php:7

References $DIC, ilObjFileAccess\_lookupFileSize(), ilObject\_lookupObjId(), ilObject\_lookupType(), calculateRecursive(), and validateAccess().

Referenced by calculateRecursive(), and init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyFile()

ilFolderDownloadBackgroundTaskHandler::copyFile (   $a_obj_id,
  $a_title,
  $a_tmpdir,
$a_current_step 
)
protected

Copies a file to the specified temporary directory.

Parameters
int$a_obj_id
string$a_title
string$a_tmpdir
int&$a_current_step

Definition at line 338 of file class.ilFolderDownloadBackgroundTaskHandler.php.

339 {
340 // :TODO: every file?
341 $this->task->setCurrentStep(++$a_current_step);
342 $this->task->save();
343
344 $new_filename = $a_tmpdir . "/" . ilUtil::getASCIIFilename($a_title);
345
346 // bugfix mantis 24309:
347 // alter the filename if there are identically named files in the same folder to prevent overwriting
348 if (file_exists($new_filename)) {
349 $new_filename = $this->renameDuplicateFile($new_filename);
350 }
351
352 // copy to temporary directory
353 include_once "Modules/File/classes/class.ilObjFile.php";
354 $old_filename = ilObjFile::_lookupAbsolutePath($a_obj_id);
355 if (!copy($old_filename, $new_filename)) {
356 throw new ilFileException("Could not copy " . $old_filename . " to " . $new_filename);
357 }
358
359 touch($new_filename, filectime($old_filename));
360 }
Class to report exception.
static renameDuplicateFile($duplicate_filename)
bugfix mantis 24309: add a number in round brackets to the filename (in front of the file-type-extens...
static _lookupAbsolutePath($obj_id, $a_version=null)
static getASCIIFilename($a_filename)
convert utf8 to ascii filename

References ilObjFile\_lookupAbsolutePath(), ilUtil\getASCIIFilename(), and renameDuplicateFile().

Referenced by gatherFiles(), and recurseFolder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gatherFiles()

ilFolderDownloadBackgroundTaskHandler::gatherFiles ( )
protected

Copy files to target directory.

Returns
int current step

Reimplemented from ilZipBackgroundTaskHandler.

Definition at line 212 of file class.ilFolderDownloadBackgroundTaskHandler.php.

213 {
214 $tmpdir = $this->getTempFolderPath();
215
216 $current_step = 0;
217
218 // parse folders
219 foreach ($this->getRefIds() as $ref_id) {
220 // has been cancelled: hurry up
221 if ($this->task->isToBeCancelled()) {
222 return;
223 }
224
225 if (!$this->validateAccess($ref_id)) {
226 continue;
227 }
228
229 $object = ilObjectFactory::getInstanceByRefId($ref_id);
230 switch ($object->getType()) {
231 case "fold":
232 $this->recurseFolder($ref_id, $object->getTitle(), $tmpdir, $current_step);
233 break;
234
235 case "file":
236 $this->copyFile($object->getId(), $object->getTitle(), $tmpdir, $current_step);
237 break;
238 }
239 }
240
241 return $current_step;
242 }
recurseFolder($a_ref_id, $a_title, $a_tmpdir, &$a_current_step)
Copies a folder and its files to the specified temporary directory.
copyFile($a_obj_id, $a_title, $a_tmpdir, &$a_current_step)
Copies a file to the specified temporary directory.
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
getTempFolderPath()
Gets the temporary folder path to copy the files and folders to.

References copyFile(), ilObjectFactory\getInstanceByRefId(), getRefIds(), ilZipBackgroundTaskHandler\getTempFolderPath(), recurseFolder(), and validateAccess().

+ Here is the call graph for this function:

◆ getDownloadSizeLimit()

ilFolderDownloadBackgroundTaskHandler::getDownloadSizeLimit ( )
protected

Get overall download size limit.

Returns
int

Definition at line 438 of file class.ilFolderDownloadBackgroundTaskHandler.php.

439 {
440 return (int) $this->settings->get("bgtask_download_limit", 0);
441 }

References settings().

Referenced by init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getFileCountThreshold()

ilFolderDownloadBackgroundTaskHandler::getFileCountThreshold ( )
protected

Get file count threshold.

Returns
int

Definition at line 448 of file class.ilFolderDownloadBackgroundTaskHandler.php.

449 {
450 return (int) $this->settings->get("bgtask_download_tcount", 0);
451 }

References settings().

Referenced by init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getInstanceFromTask()

static ilFolderDownloadBackgroundTaskHandler::getInstanceFromTask ( ilBackgroundTask  $a_task)
static

Constructor/Factory.

Parameters
ilBackgroundTask$a_task
Returns
\self

Implements ilBackgroundTaskHandler.

Definition at line 37 of file class.ilFolderDownloadBackgroundTaskHandler.php.

38 {
39 global $DIC;
40 $tree = $DIC['tree'];
41
42 $obj = new self();
43 $obj->setTask($a_task);
44
45 $params = $a_task->getParams();
46 $obj->setRefIds($params["ref_ids"]);
47
48 $ref_id = (sizeof($params["ref_ids"]) == 1)
49 ? $params["ref_ids"][0]
50 : $tree->getParentId($params["ref_ids"][0]);
51 $obj->setDeliveryFilename(ilObject::_lookupTitle(ilObject::_lookupObjId($ref_id)));
52
53 return $obj;
54 }
getParams()
Gets the params.
static _lookupTitle($a_id)
lookup object title
$params
Definition: disable.php:11

References $DIC, $params, ilObject\_lookupObjId(), ilObject\_lookupTitle(), and ilBackgroundTask\getParams().

+ Here is the call graph for this function:

◆ getObjectListAction()

static ilFolderDownloadBackgroundTaskHandler::getObjectListAction (   $a_ref_id)
static

Get object list action.

See also
ilObjectListGUI::insertCommand()
Parameters
int$a_ref_id
Returns
string

Definition at line 104 of file class.ilFolderDownloadBackgroundTaskHandler.php.

105 {
107
108 return "il.BgTask.init('" . static::class . "', " . $a_ref_id . ");";
109 }

References initObjectListAction().

Referenced by ilObjectListGUI\insertCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRefIds()

ilFolderDownloadBackgroundTaskHandler::getRefIds ( )

Gets the involved reference ids.

Returns
array

Definition at line 77 of file class.ilFolderDownloadBackgroundTaskHandler.php.

References $ref_ids.

Referenced by gatherFiles(), and init().

+ Here is the caller graph for this function:

◆ getTotalSizeThreshold()

ilFolderDownloadBackgroundTaskHandler::getTotalSizeThreshold ( )
protected

Get total size threshold.

Returns
int

Definition at line 458 of file class.ilFolderDownloadBackgroundTaskHandler.php.

459 {
460 return (int) $this->settings->get("bgtask_download_tsize", 0);
461 }

References settings().

Referenced by init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init()

ilFolderDownloadBackgroundTaskHandler::init (   $a_params = null)

Init background task.

Parameters
mixed$a_params
Returns
\stdClass json

Implements ilBackgroundTaskHandler.

Definition at line 141 of file class.ilFolderDownloadBackgroundTaskHandler.php.

142 {
143 global $DIC;
144 $lng = $DIC['lng'];
145 $ilUser = $DIC['ilUser'];
146
147 if ($a_params) {
148 $this->setRefIds(explode(",", $a_params));
149 }
150
151 $file_count = $total_bytes = 0;
152 $this->calculateRecursive($this->getRefIds(), $file_count, $total_bytes);
153
154 include_once "Services/BackgroundTask/classes/class.ilBackgroundTaskJson.php";
155
156 // empty folder - nothing to do
157 if (!$file_count) {
158 $json = ilBackgroundTaskJson::getFailedJson($lng->txt("bgtask_empty_folder"));
159 } else {
160 // check if below download size limit
161 $size_limit_mb = $this->getDownloadSizeLimit() * 1024 * 1024;
162 if ($size_limit_mb > 0 && $total_bytes > $size_limit_mb) {
163 $json = ilBackgroundTaskJson::getFailedJson(sprintf($lng->txt("bgtask_download_too_large"), ilUtil::formatSize($size_limit_mb)));
164 } else {
165 // set up task instance
166 include_once "Services/BackgroundTask/classes/class.ilBackgroundTask.php";
167 $task = new ilBackgroundTask();
168 $task->setHandlerId(get_class($this));
169 $task->setUserId($ilUser->getId());
170 $task->setParams(array(
171 "ref_ids" => $this->getRefIds()
172 ));
173 $task->setSteps($file_count+1); // +1 = create zip
175 $task->save();
176
177 $this->setTask($task);
178
179 // above thresholds: do background task
180 if ($file_count >= $this->getFileCountThreshold()
181 || $total_bytes >= $this->getTotalSizeThreshold() * 1024 * 1024) {
182 // check for other tasks from same user
183 $existing = ilBackgroundTask::getActiveByUserId($ilUser->getId());
184 if (sizeof($existing)) {
186 } else {
188 $task->getId(),
189 sprintf($lng->txt("bgtask_download_long"), $file_count, ilUtil::formatSize($total_bytes)),
190 $file_count+1
191 );
192 }
193 }
194 // below thresholds: direct download
195 else {
196 $this->process();
197
199 $task->save();
200
201 $res = $this->finish();
202
203 // see ilBackgroundTaskHub::progress()
204 $json = ilBackgroundTaskJson::getFinishedJson($task->getId(), $res[0], $res[1]);
205 }
206 }
207 }
208
209 return $json;
210 }
sprintf('%.4f', $callTime)
static getFailedJson($a_message)
Get json for failed task.
static getProcessingJson($a_task_id, $a_message, $a_steps)
Get json for processing task.
static getFinishedJson($a_task_id, $a_cmd, $a_result)
Get json for finished task.
static getBlockedJson($a_task_id)
Get json for blocked task.
static getActiveByUserId($a_user_id)
static formatSize($size, $a_mode='short', $a_lng=null)
Returns the specified file size value in a human friendly form.
setTask(ilBackgroundTask $a_task)
Set current task instance.
global $lng
Definition: privfeed.php:17
foreach($_POST as $key=> $value) $res
$ilUser
Definition: imgupload.php:18

References $DIC, $ilUser, $lng, $res, ilZipBackgroundTaskHandler\$task, calculateRecursive(), ilZipBackgroundTaskHandler\finish(), ilUtil\formatSize(), ilBackgroundTask\getActiveByUserId(), ilBackgroundTaskJson\getBlockedJson(), getDownloadSizeLimit(), ilBackgroundTaskJson\getFailedJson(), getFileCountThreshold(), ilBackgroundTaskJson\getFinishedJson(), ilBackgroundTaskJson\getProcessingJson(), getRefIds(), getTotalSizeThreshold(), ilZipBackgroundTaskHandler\process(), setRefIds(), ilZipBackgroundTaskHandler\setTask(), sprintf, ilBackgroundTask\STATUS_FINISHED, and ilBackgroundTask\STATUS_INITIALIZED.

+ Here is the call graph for this function:

◆ initObjectListAction()

static ilFolderDownloadBackgroundTaskHandler::initObjectListAction ( )
static

init js for background download

Definition at line 115 of file class.ilFolderDownloadBackgroundTaskHandler.php.

116 {
117 // js init only needed once per request
118 if (!self::$initialized) {
119 global $DIC;
120 $tpl = $DIC['tpl'];
121 $ilCtrl = $DIC['ilCtrl'];
122
123 $url = $ilCtrl->getLinkTargetByClass(array("ilrepositorygui", "ilobjfoldergui", "ilbackgroundtaskhub"), "", "", true, false);
124
125 $tpl->addJavaScript("Services/BackgroundTask/js/BgTask.js");
126 $tpl->addOnLoadCode('il.BgTask.setAjax("' . $url . '");');
127
128 // enable modals from js
129 include_once "Services/UIComponent/Modal/classes/class.ilModalGUI.php";
131
132 self::$initialized = true;
133 }
134 }
$tpl
Definition: ilias.php:10
static initJS(ilTemplate $a_main_tpl=null)
Init javascript.
global $ilCtrl
Definition: ilias.php:18
$url

References $DIC, $ilCtrl, $tpl, $url, and ilModalGUI\initJS().

Referenced by getObjectListAction(), and ilContainerContentGUI\renderItem().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isActive()

static ilFolderDownloadBackgroundTaskHandler::isActive ( )
static

Is folder background download active?

Returns
boolean

Definition at line 66 of file class.ilFolderDownloadBackgroundTaskHandler.php.

67 {
68 $settings = new ilSetting("fold");
69 return (bool) $settings->get("bgtask_download", false);
70 }

References $settings.

Referenced by ilObjectListGUI\insertCommand().

+ Here is the caller graph for this function:

◆ recurseFolder()

ilFolderDownloadBackgroundTaskHandler::recurseFolder (   $a_ref_id,
  $a_title,
  $a_tmpdir,
$a_current_step 
)
protected

Copies a folder and its files to the specified temporary directory.

Parameters
int$a_ref_id
string$a_title
string$a_tmpdir
int&$a_current_step

Definition at line 299 of file class.ilFolderDownloadBackgroundTaskHandler.php.

300 {
301 global $DIC;
302 $tree = $DIC['tree'];
303
304 $tmpdir = $a_tmpdir . "/" . ilUtil::getASCIIFilename($a_title);
305 ilUtil::makeDir($tmpdir);
306
307 $subtree = $tree->getChildsByTypeFilter($a_ref_id, array("fold", "file"));
308 foreach ($subtree as $child) {
309 // has been cancelled: hurry up
310 if ($this->task->isToBeCancelled()) {
311 return;
312 }
313
314 if (!$this->validateAccess($child["ref_id"])) {
315 continue;
316 }
317
318 switch ($child["type"]) {
319 case "fold":
320 $this->recurseFolder($child["ref_id"], $child["title"], $tmpdir, $a_current_step);
321 break;
322
323 case "file":
324 $this->copyFile($child["obj_id"], $child["title"], $tmpdir, $a_current_step);
325 break;
326 }
327 }
328 }
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...

References $DIC, copyFile(), ilUtil\getASCIIFilename(), ilUtil\makeDir(), recurseFolder(), and validateAccess().

Referenced by gatherFiles(), and recurseFolder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renameDuplicateFile()

static ilFolderDownloadBackgroundTaskHandler::renameDuplicateFile (   $duplicate_filename)
staticprivate

bugfix mantis 24309: add a number in round brackets to the filename (in front of the file-type-extension) if there are identically named files in the same folder to prevent an exception being thrown

Parameters
$duplicate_filenamestring filename including path and extension
Returns
string

Definition at line 372 of file class.ilFolderDownloadBackgroundTaskHandler.php.

373 {
374 // determine the copy_number that will be added to the filename either by obtaining it from
375 // the entry of the current file in the duplicate_files-array or use 1 if there is no entry yet
376 $copy_number = 1;
377 $duplicate_has_array_entry = false;
378 foreach (self::$duplicate_files as &$duplicate_file) {
379 if ($duplicate_file['file_name'] == $duplicate_filename) {
380 $duplicate_has_array_entry = true;
381 $copy_number = $duplicate_file['copy_number'];
382 // increment the copy_number for correctly renaming the next duplicate of this file
383 $duplicate_file['copy_number']++;
384 }
385 }
386
387 // create an array entry for the duplicate file if there isn't one to ensure that the
388 // copy_number can be determined correctly for other duplicates of this file
389 if (!$duplicate_has_array_entry) {
390 self::$duplicate_files[] = [
391 'file_name' => $duplicate_filename,
392 'copy_number' => 2 // set as 2 because 1 is already used for this duplicate
393 ];
394 }
395
396 // rename the file
397 $path = pathinfo($duplicate_filename, PATHINFO_DIRNAME);
398 $filename = pathinfo($duplicate_filename, PATHINFO_FILENAME);
399 $extension = pathinfo($duplicate_filename, PATHINFO_EXTENSION);
400 $new_filename = $path . "/" . $filename . " (" . $copy_number . ")." . $extension;
401
402 return $new_filename;
403 }

References ilZipBackgroundTaskHandler\$filename, and $path.

Referenced by copyFile().

+ Here is the caller graph for this function:

◆ setRefIds()

ilFolderDownloadBackgroundTaskHandler::setRefIds (   $a_val)

Sets the involved reference ids.

Parameters
array$a_val

Definition at line 87 of file class.ilFolderDownloadBackgroundTaskHandler.php.

88 {
89 $this->ref_ids = $a_val;
90 }

Referenced by init().

+ Here is the caller graph for this function:

◆ validateAccess()

ilFolderDownloadBackgroundTaskHandler::validateAccess (   $ref_id)
protected

Check file access.

Parameters
int$ref_id
Returns
boolean

Definition at line 412 of file class.ilFolderDownloadBackgroundTaskHandler.php.

413 {
414 global $DIC;
415 $ilAccess = $DIC['ilAccess'];
416
417 if (!$ilAccess->checkAccess("read", "", $ref_id)) {
418 return false;
419 }
420
421 if (ilObject::_isInTrash($ref_id)) {
422 return false;
423 }
424
425 return true;
426 }
static _isInTrash($a_ref_id)
checks wether object is in trash

References $DIC, and ilObject\_isInTrash().

Referenced by calculateRecursive(), gatherFiles(), and recurseFolder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $duplicate_files

ilFolderDownloadBackgroundTaskHandler::$duplicate_files = array()
staticprivate

◆ $initialized

ilFolderDownloadBackgroundTaskHandler::$initialized
staticprotected

◆ $ref_ids

ilFolderDownloadBackgroundTaskHandler::$ref_ids = array()
protected

Definition at line 15 of file class.ilFolderDownloadBackgroundTaskHandler.php.

Referenced by getRefIds().

◆ $settings

ilFolderDownloadBackgroundTaskHandler::$settings
protected

Definition at line 14 of file class.ilFolderDownloadBackgroundTaskHandler.php.

Referenced by isActive().


The documentation for this class was generated from the following file: