ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilDownloadSubmissionsBackgroundTask.php
Go to the documentation of this file.
1 <?php
2 
22 
28 {
29  protected int $exc_ref_id;
30  protected int $exc_id;
31  protected ?int $ass_id;
32  protected ?int $participant_id;
33  protected int $user_id;
34  protected ?TaskFactory $task_factory = null;
35  protected ?TaskManager $task_manager = null;
36  protected ilLanguage $lng;
37  protected ?ilLogger $logger = null;
38 
39  public function __construct(
40  int $a_usr_id,
41  int $a_exc_ref_id,
42  int $a_exc_id,
43  int $a_ass_id,
44  int $a_participant_id
45  ) {
46  global $DIC;
47 
48  $this->user_id = $a_usr_id;
49  $this->exc_ref_id = $a_exc_ref_id;
50  $this->exc_id = $a_exc_id;
51  $this->ass_id = $a_ass_id;
52  $this->participant_id = $a_participant_id;
53 
54  $this->task_factory = $DIC->backgroundTasks()->taskFactory();
55  $this->task_manager = $DIC->backgroundTasks()->taskManager();
57  $this->logger = $DIC->logger()->exc();
58  }
59 
60  public function run(): bool
61  {
62  $bucket = new BasicBucket();
63  $bucket->setUserId($this->user_id);
64 
65  $this->logger->debug("* Create task 'collect_data_job' using the following values:");
66  $this->logger->debug("job class = " . ilExerciseManagementCollectFilesJob::class);
67  $this->logger->debug("exc_id = " . $this->exc_id . ", exc_ref_id = " . $this->exc_ref_id . ", ass_id = " . (int) $this->ass_id . ", participant_id = " . (int) $this->participant_id . ", user_id = " . $this->user_id);
68 
69  $collect_data_job = $this->task_factory->createTask(
70  ilExerciseManagementCollectFilesJob::class,
71  [
72  $this->exc_id,
73  $this->exc_ref_id,
74  (int) $this->ass_id,
75  (int) $this->participant_id,
76  $this->user_id
77  ]
78  );
79 
80  $this->logger->debug("* Create task 'zip job' using the following values:");
81  $this->logger->debug("job class = " . ilSubmissionsZipJob::class);
82  $this->logger->debug("sending as input the task called->collect_data_job");
83 
84  $zip_job = $this->task_factory->createTask(ilSubmissionsZipJob::class, [$collect_data_job]);
85 
86  if ($this->participant_id > 0) {
87  $download_name = ilExSubmission::getDirectoryNameFromUserData($this->participant_id);
88  $bucket->setTitle($this->getParticipantBucketTitle());
89  } else {
90  $download_name = ilFileUtils::getASCIIFilename(ilExAssignment::lookupTitle($this->ass_id));
91  $bucket->setTitle($download_name);
92  }
93 
94 
95  $this->logger->debug("* Create task 'download_interaction' using the following values:");
96  $this->logger->debug("job class = " . ilExDownloadSubmissionsZipInteraction::class);
97  $this->logger->debug("download_name which is the same as bucket title = " . $download_name . " + the zip_job task");
98  // see comments here -> https://github.com/leifos-gmbh/ILIAS/commit/df6fc44a4c85da33bd8dd5b391a396349e7fa68f
99  $download_interaction = $this->task_factory->createTask(ilExDownloadSubmissionsZipInteraction::class, [$zip_job, $download_name]);
100 
101  //download name
102  $bucket->setTask($download_interaction);
103  $this->task_manager->run($bucket);
104  return true;
105  }
106 
107  protected function getParticipantBucketTitle(): string
108  {
109  $name = ilObjUser::_lookupName($this->participant_id);
110  return ucfirst($name['lastname']) . ", " . ucfirst($name['firstname']);
111  }
112 }
static lookupTitle(int $a_id)
static _lookupName(int $a_user_id)
lookup user name
static getASCIIFilename(string $a_filename)
global $DIC
Definition: feed.php:28
if($format !==null) $name
Definition: metadata.php:247
Download submissions and feedback for exercises.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getDirectoryNameFromUserData(int $a_user_id)
__construct(int $a_usr_id, int $a_exc_ref_id, int $a_exc_id, int $a_ass_id, int $a_participant_id)