ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
ilDownloadFilesBackgroundTask Class Reference

Description of class class. More...

+ Collaboration diagram for ilDownloadFilesBackgroundTask:

Public Member Functions

 __construct ($a_usr_id)
 Constructor. More...
 
 setEvents (array $a_events)
 Set events. More...
 
 getEvents ()
 Get events. More...
 
 setBucketTitle ($a_title)
 set bucket title. More...
 
 getBucketTitle ()
 return bucket title. More...
 
 run ()
 Run task. More...
 

Protected Attributes

 $user_id
 
 $user = null
 
 $task_factory = null
 
 $bucket_title
 
 $has_files = false
 

Private Member Functions

 collectFiles (ilCalendarCopyDefinition $def)
 Collect files. More...
 
 getEventFileNameFromId (ilCalendarEntry $a_event, $a_file_id)
 Only courses store the files using the id for naming. More...
 

Private Attributes

 $logger = null
 
 $events = []
 Array of calendar event. More...
 

Detailed Description

Description of class class.

Author
Stefan Meyer smeye.nosp@m.r.il.nosp@m.ias@g.nosp@m.mx.d.nosp@m.e

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

Constructor & Destructor Documentation

◆ __construct()

ilDownloadFilesBackgroundTask::__construct (   $a_usr_id)

Constructor.

Parameters
type$a_usr_id

Definition at line 58 of file class.ilDownloadFilesBackgroundTask.php.

References $DIC, ilObjectFactory\getInstanceByObjId(), and user().

59  {
60  global $DIC;
61  $this->logger = $DIC->logger()->cal();
62  $this->user_id = $a_usr_id;
63  $this->task_factory = $DIC->backgroundTasks()->taskFactory();
64  $this->lng = $DIC->language();
65 
66  $this->user = \ilObjectFactory::getInstanceByObjId($a_usr_id, false);
67  }
user()
Definition: user.php:4
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
$DIC
Definition: xapitoken.php:46
+ Here is the call graph for this function:

Member Function Documentation

◆ collectFiles()

ilDownloadFilesBackgroundTask::collectFiles ( ilCalendarCopyDefinition  $def)
private

Collect files.

Definition at line 156 of file class.ilDownloadFilesBackgroundTask.php.

References ilCalendarCopyDefinition\addCopyDefinition(), ilUtil\getASCIIFilename(), getEventFileNameFromId(), getEvents(), ilAppointmentFileHandlerFactory\getInstance(), ilCalendarCategory\getInstanceByCategoryId(), IL_CAL_FKT_DATE, IL_CAL_UNIX, ilCalendarCategory\TYPE_OBJ, and user().

Referenced by run().

157  {
158  //filter here the objects, don't repeat the object Id
159  $object_ids = [];
160  foreach ($this->getEvents() as $event) {
161  $start = new ilDateTime($event['dstart'], IL_CAL_UNIX);
162  $cat = ilCalendarCategory::getInstanceByCategoryId($event['category_id']);
163  $obj_id = $cat->getObjId();
164 
165  $this->logger->debug('Handling event: ' . $event['event']->getPresentationTitle());
166  //22295 If the object type is exc then we need all the assignments.Otherwise we will get only one.
167  if (
168  $cat->getType() != \ilCalendarCategory::TYPE_OBJ ||
169  $cat->getObjType() == 'exc' ||
170  !in_array($obj_id, $object_ids)
171  ) {
172 
173  $this->logger->debug('New obj_id..');
174  $object_ids[] = $obj_id;
175 
176  $folder_date = $start->get(IL_CAL_FKT_DATE, 'Y-m-d', $this->user->getTimeZone());
177 
178 
179  if ($event['fullday']) {
180  $folder_app = ilUtil::getASCIIFilename($event['event']->getPresentationTitle(false)); //title formalized
181  } else {
182  $start_time = $start->get(IL_CAL_FKT_DATE, 'H.i', $this->user->getTimeZone());
183 
184  $end = new ilDateTime($event['dend'], IL_CAL_UNIX);
185  $end_time = $end->get(IL_CAL_FKT_DATE, 'H.i', $this->user->getTimeZone());
186 
187  if ($start_time != $end_time) {
188  $start_time .= (' - ' . $end_time);
189  }
190  $folder_app = $start_time . ' ' .
191  ilUtil::getASCIIFilename($event['event']->getPresentationTitle(false)); //title formalized
192  }
193 
194  $this->logger->debug("collecting files...event title = " . $folder_app);
195  $file_handler = ilAppointmentFileHandlerFactory::getInstance($event);
196  $this->logger->debug('Current file handler: ' . get_class($file_handler));
197 
198  if ($files = $file_handler->getFiles()) {
199  $this->has_files = true;
200  }
201  //if file_system_path is set, it is the real path of the file (courses use ids as names file->getId())
202  //otherwise $file_with_absolut_path is the path. ($file->getName())
203  foreach ($files as $file_system_path => $file_with_absolut_path) {
204  #22198 check if the key is a string defined by ILIAS or a number set by PHP as a sequential key
205  //[/Sites/data/client/ilCourse/2/crs_xx/info/1] => /Sites/data/client/ilCourse/2/crs_xxx/info/image.png
206  //[0] => /Sites/data/client/ilFile/3/file_3xx/001/image.png
207  if (is_string($file_system_path)) {
208  $file_with_absolut_path = $file_system_path;
209  $file_id = (int) basename($file_system_path);
210  $basename = $this->getEventFileNameFromId($event['event'], $file_id);
211  } else {
212  $basename = ilUtil::getASCIIFilename(basename($file_with_absolut_path));
213  }
214  $def->addCopyDefinition(
215  $file_with_absolut_path,
216  $folder_date . '/' . $folder_app . '/' . $basename
217  );
218 
219  $this->logger->debug('Added new copy definition: ' . $folder_date . '/' . $folder_app . '/' . $basename . ' -> ' . $file_with_absolut_path);
220  }
221  }
222  else {
223  $this->logger->info('Ignoring obj_id: ' . $obj_id . ' already processed.');
224  }
225  }
226  }
getEventFileNameFromId(ilCalendarEntry $a_event, $a_file_id)
Only courses store the files using the id for naming.
const IL_CAL_UNIX
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
user()
Definition: user.php:4
addCopyDefinition($a_source, $a_target)
Add copy definition.
const IL_CAL_FKT_DATE
static getInstanceByCategoryId($a_cat_id)
Get instance by category id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getBucketTitle()

ilDownloadFilesBackgroundTask::getBucketTitle ( )

return bucket title.

Returns
string

Definition at line 100 of file class.ilDownloadFilesBackgroundTask.php.

References $bucket_title.

Referenced by run().

101  {
102  //TODO: fix ilUtil zip stuff
103  // Error If name starts "-"
104  // error massage from ilUtil->execQuoted = ["","zip error: Invalid command arguments (short option 'a' not supported)"]
105  if (substr($this->bucket_title, 0, 1) === "-") {
106  $this->bucket_title = ltrim($this->bucket_title, "-");
107  }
108 
109  return $this->bucket_title;
110  }
+ Here is the caller graph for this function:

◆ getEventFileNameFromId()

ilDownloadFilesBackgroundTask::getEventFileNameFromId ( ilCalendarEntry  $a_event,
  $a_file_id 
)
private

Only courses store the files using the id for naming.

Parameters
ilCalendarEntry
Returns
string

Definition at line 233 of file class.ilDownloadFilesBackgroundTask.php.

References $filename, ilCalendarCategoryAssignments\_lookupCategory(), ilObject\_lookupType(), ilUtil\getASCIIFilename(), ilCalendarEntry\getEntryId(), ilCalendarCategory\getInstanceByCategoryId(), and ilCalendarCategory\TYPE_OBJ.

Referenced by collectFiles().

234  {
235  $filename = "";
238  $cat_type = $cat->getType();
239  $obj_id = $cat->getObjId();
240  $obj_type = ilObject::_lookupType($obj_id);
241 
242  if ($cat_type == ilCalendarCategory::TYPE_OBJ && $obj_type == "crs") {
243  $course_file = new ilCourseFile((int) $a_file_id);
244  $filename = $course_file->getFileName();
245  }
247  }
static _lookupCategory($a_cal_id)
Lookup category id.
getEntryId()
get entry id
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static getInstanceByCategoryId($a_cat_id)
Get instance by category id.
static _lookupType($a_id, $a_reference=false)
lookup object type
$filename
Definition: buildRTE.php:89
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getEvents()

ilDownloadFilesBackgroundTask::getEvents ( )

Get events.

Returns
type

Definition at line 82 of file class.ilDownloadFilesBackgroundTask.php.

References $events.

Referenced by collectFiles().

83  {
84  return $this->events;
85  }
+ Here is the caller graph for this function:

◆ run()

ilDownloadFilesBackgroundTask::run ( )

Run task.

Returns
bool

Definition at line 116 of file class.ilDownloadFilesBackgroundTask.php.

References $GLOBALS, collectFiles(), ilUtil\getASCIIFilename(), getBucketTitle(), and ilUtil\sendInfo().

117  {
118  $definition = new ilCalendarCopyDefinition();
119  $normalized_name = ilUtil::getASCIIFilename($this->getBucketTitle());
120  $definition->setTempDir($normalized_name);
121 
122  $this->collectFiles($definition);
123 
124  if (!$this->has_files) {
125  ilUtil::sendInfo($this->lng->txt("cal_down_no_files"), true);
126  return false;
127  }
128 
129  $bucket = new BasicBucket();
130  $bucket->setUserId($this->user_id);
131 
132  // move files from source dir to target directory
133  $copy_job = $this->task_factory->createTask(ilCalendarCopyFilesToTempDirectoryJob::class, [$definition]);
134  $zip_job = $this->task_factory->createTask(ilCalendarZipJob::class, [$copy_job]);
135 
136  $download_name = new StringValue();
137 
138  $this->logger->debug("Normalized name = " . $normalized_name);
139  $download_name->setValue($normalized_name . '.zip');
140 
141  $download_interaction = $this->task_factory->createTask(ilCalendarDownloadZipInteraction::class, [$zip_job, $download_name]);
142 
143  // last task to bucket
144  $bucket->setTask($download_interaction);
145 
146  $bucket->setTitle($this->getBucketTitle());
147 
148  $task_manager = $GLOBALS['DIC']->backgroundTasks()->taskManager();
149  $task_manager->run($bucket);
150  return true;
151  }
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
collectFiles(ilCalendarCopyDefinition $def)
Collect files.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
+ Here is the call graph for this function:

◆ setBucketTitle()

ilDownloadFilesBackgroundTask::setBucketTitle (   $a_title)

set bucket title.

Parameters
$a_title

Definition at line 91 of file class.ilDownloadFilesBackgroundTask.php.

Referenced by ilAppointmentPresentationGUI\downloadFiles().

92  {
93  $this->bucket_title = $a_title;
94  }
+ Here is the caller graph for this function:

◆ setEvents()

ilDownloadFilesBackgroundTask::setEvents ( array  $a_events)

Set events.

Parameters
array$a_events

Definition at line 73 of file class.ilDownloadFilesBackgroundTask.php.

74  {
75  $this->events = $a_events;
76  }

Field Documentation

◆ $bucket_title

ilDownloadFilesBackgroundTask::$bucket_title
protected

Definition at line 46 of file class.ilDownloadFilesBackgroundTask.php.

Referenced by getBucketTitle().

◆ $events

ilDownloadFilesBackgroundTask::$events = []
private

Array of calendar event.

Definition at line 40 of file class.ilDownloadFilesBackgroundTask.php.

Referenced by getEvents().

◆ $has_files

ilDownloadFilesBackgroundTask::$has_files = false
protected

Definition at line 52 of file class.ilDownloadFilesBackgroundTask.php.

◆ $logger

ilDownloadFilesBackgroundTask::$logger = null
private

Definition at line 19 of file class.ilDownloadFilesBackgroundTask.php.

◆ $task_factory

ilDownloadFilesBackgroundTask::$task_factory = null
protected

Definition at line 35 of file class.ilDownloadFilesBackgroundTask.php.

◆ $user

ilDownloadFilesBackgroundTask::$user = null
protected

Definition at line 30 of file class.ilDownloadFilesBackgroundTask.php.

◆ $user_id

ilDownloadFilesBackgroundTask::$user_id
protected

Definition at line 24 of file class.ilDownloadFilesBackgroundTask.php.


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