ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilCertificateMigrationJob Class Reference

Class ilCertificateMigrationJob. More...

+ Inheritance diagram for ilCertificateMigrationJob:
+ Collaboration diagram for ilCertificateMigrationJob:

Public Member Functions

 run (array $input, Observer $observer)
 
 isStateless ()
 
 getExpectedTimeOfTaskInSeconds ()
 
 getInputTypes ()
 
 getOutputType ()
 
 getTaskInformations ()
 
- Public Member Functions inherited from ILIAS\BackgroundTasks\Implementation\Tasks\AbstractJob
 getInput ()
 
Returns
mixed returns the input array
More...
 
- Public Member Functions inherited from ILIAS\BackgroundTasks\Implementation\Tasks\AbstractTask
 setInput (array $values)
 
 getOutput ()
 
 getInput ()
 
 getType ()
 
 unfoldTask ()
 Unfold the task. More...
 
 getRemoveOption ()
 
Returns
Option An Option to remove the current task and do some cleanup if possible. This Option is displayed if the Bucket is completed. You do not have to provide an additional Option to remove in your UserInteraction, the remove-Option is added to the list of Options (last position)
See also
self::getAbortOption();
More...
 
 getAbortOption ()
 
Returns
Option In case a Job is failed or did not respond for some time, an Abort-Option is displayed. There is already a Standard-Abort-Option registered, you can override with your own and do some cleanup if possible.
More...
 

Protected Member Functions

 initTask ()
 
 updateTask (array $data)
 
 getScormCertificates ()
 Get certificates for scorm objects. More...
 
 getTestCertificates ()
 Get certificates for test objects. More...
 
 getExerciseCertificates ()
 Get certificates for exercise objects. More...
 
 getCourseCertificates ()
 Get certificates for course objects. More...
 
- Protected Member Functions inherited from ILIAS\BackgroundTasks\Implementation\Tasks\AbstractTask
 checkTypes ($values)
 
 extractType ($value)
 

Protected Attributes

 $db_table
 
 $user_id
 
 $tree
 
 $db
 
 $event_handler
 
 $task_factory
 
- Protected Attributes inherited from ILIAS\BackgroundTasks\Implementation\Tasks\AbstractTask
 $input = []
 
 $output
 

Private Attributes

 $logger
 
 $types
 

Additional Inherited Members

- Data Fields inherited from ILIAS\BackgroundTasks\Implementation\Tasks\AbstractTask
const MAIN_REMOVE = 'bt_main_remove'
 
const MAIN_ABORT = 'bt_main_abort'
 

Detailed Description

Member Function Documentation

◆ getCourseCertificates()

ilCertificateMigrationJob::getCourseCertificates ( )
protected

Get certificates for course objects.

Returns
array

Definition at line 515 of file class.ilCertificateMigrationJob.php.

References $data, ilParticipants\_getMembershipByType(), ilCourseCertificateAdapter\_hasUserCertificate(), ilCourseCertificateAdapter\_preloadListData(), and ilObjectFactory\getInstanceByObjId().

Referenced by run().

515  : array
516  {
517  $this->logger->info('Trying to get course certificates for user: ' . $this->user_id);
518 
519  $data = array();
520 
521  $obj_ids = \ilCourseParticipants::_getMembershipByType($this->user_id, "crs");
522  if ($obj_ids) {
523  \ilCourseCertificateAdapter::_preloadListData([$this->user_id], $obj_ids);
524 
525  foreach ($obj_ids as $objectId) {
526  if (\ilCourseCertificateAdapter::_hasUserCertificate($this->user_id, $objectId)) {
527  $object = \ilObjectFactory::getInstanceByObjId($objectId, false);
528  if (!$object || !($object instanceof \ilObjCourse)) {
529  $this->logger->debug('Found inconsistent object, skipped migration: ' . $objectId);
530  continue;
531  }
532 
533  $data[] = $objectId;
534  }
535  }
536  }
537 
538  $this->logger->info('Got ' . count($data) . ' course certificates for user: ' . $this->user_id);
539  return $data;
540  }
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
static _preloadListData($a_usr_ids, $a_obj_ids)
Get certificate/passed status for all given objects and users.
Class ilObjCourse.
static _hasUserCertificate($a_usr_id, $a_obj_id)
Check if user has certificate for course.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
$data
Definition: bench.php:6
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExerciseCertificates()

ilCertificateMigrationJob::getExerciseCertificates ( )
protected

Get certificates for exercise objects.

Returns
array

Definition at line 488 of file class.ilCertificateMigrationJob.php.

References $data, ilObjExercise\_lookupFinishedUserExercises(), and ilObjectFactory\getInstanceByObjId().

Referenced by run().

488  : array
489  {
490  $this->logger->info('Trying to get exercise certificates for user: ' . $this->user_id);
491 
492  $data = array();
493 
494  foreach (\ilObjExercise::_lookupFinishedUserExercises($this->user_id) as $objectId => $passed) {
495  $object = \ilObjectFactory::getInstanceByObjId($objectId, false);
496  if (!$object || !($object instanceof \ilObjExercise)) {
497  $this->logger->debug('Found inconsistent object, skipped migration: ' . $objectId);
498  continue;
499  }
500 
501  $adapter = new \ilExerciseCertificateAdapter($object);
502  if ($adapter->hasUserCertificate($this->user_id)) {
503  $data[] = $objectId;
504  }
505  }
506 
507  $this->logger->info('Got ' . count($data) . ' exercise certificates for user: ' . $this->user_id);
508  return $data;
509  }
Class ilObjExercise.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _lookupFinishedUserExercises($a_user_id)
Get all exercises for user.
$data
Definition: bench.php:6
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExpectedTimeOfTaskInSeconds()

ilCertificateMigrationJob::getExpectedTimeOfTaskInSeconds ( )
Returns
int the amount of seconds this task usually takes. If your task-duration scales with the the amount of data, try to set a possible high value of try to calculate it. If a task duration exceeds this value, it will be displayed as "possibly failed" to the user

Implements ILIAS\BackgroundTasks\Task\Job.

Definition at line 278 of file class.ilCertificateMigrationJob.php.

278  : int
279  {
280  return 100;
281  }

◆ getInputTypes()

ilCertificateMigrationJob::getInputTypes ( )
Returns
Type[] Classof the Values

Implements ILIAS\BackgroundTasks\Task.

Definition at line 286 of file class.ilCertificateMigrationJob.php.

286  : array
287  {
288  return [
289  new SingleType(IntegerValue::class),
290  ];
291  }

◆ getOutputType()

ilCertificateMigrationJob::getOutputType ( )
Returns
Type

Implements ILIAS\BackgroundTasks\Task.

Definition at line 296 of file class.ilCertificateMigrationJob.php.

296  : SingleType
297  {
298  return new SingleType(IntegerValue::class);
299  }

◆ getScormCertificates()

ilCertificateMigrationJob::getScormCertificates ( )
protected

Get certificates for scorm objects.

Returns
array

Definition at line 384 of file class.ilCertificateMigrationJob.php.

References $data, $root, $type, ilObjUserTracking\_enabledLearningProgress(), ilObjSCORM2004LearningModule\_getCourseCompletionForUser(), ilObjSCORMLearningModule\_getCourseCompletionForUser(), ilLPStatus\_hasUserCompleted(), ilObjSAHSLearningModule\_lookupSubType(), ilObjectFactory\getInstanceByObjId(), and ilCertificate\isActive().

Referenced by run().

384  : array
385  {
386  $this->logger->info('Trying to get scorm certificates for user: ' . $this->user_id);
387 
388  $data = array();
389 
390  if (\ilCertificate::isActive()) {
392  $obj_ids = array();
393  $root = $this->tree->getNodeData($this->tree->getRootId());
394  foreach ($this->tree->getSubTree($root, true, "sahs") as $node) {
395  $obj_ids[] = $node["obj_id"];
396  }
397  if ($obj_ids) {
398  foreach (\ilCertificate::areObjectsActive($obj_ids) as $objectId => $active) {
399  if ($active) {
401 
402  $object = \ilObjectFactory::getInstanceByObjId($objectId, false);
403  if (!$object || !($object instanceof \ilObjSAHSLearningModule)) {
404  $this->logger->debug('Found inconsistent object, skipped migration: ' . $objectId);
405  continue;
406  }
407  $object->setSubType($type);
408 
409  $lpdata = $completed = false;
410  if ($lp_active) {
411  $completed = ilLPStatus::_hasUserCompleted($objectId, $this->user_id);
412  $lpdata = true;
413  }
414 
415  if (!$lpdata) {
416  switch ($type) {
417  case 'scorm':
419  $objectId,
420  $this->user_id
421  );
422  break;
423 
424  case 'scorm2004':
426  $objectId,
427  $this->user_id
428  );
429  break;
430  }
431  }
432 
433  if (!$completed) {
434  $this->logger->info(sprintf(
435  'User did not complete SCORM object with obj_id %s, ignoring object for migration ...',
436  $objectId
437  ));
438  continue;
439  }
440 
441  $this->logger->info(sprintf(
442  'User completed SCORM object with obj_id %s, considering object for migration ...',
443  $objectId
444  ));
445 
446  $data[] = $objectId;
447  }
448  }
449  }
450  }
451 
452  $this->logger->info('Got ' . count($data) . ' scorm certificates for user: ' . $this->user_id);
453  return $data;
454  }
$type
static _getCourseCompletionForUser($a_id, $a_user)
Get the completion of a SCORM module for a given user.
static _lookupSubType($a_obj_id)
lookup subtype id (scorm, )
static _enabledLearningProgress()
check wether learing progress is enabled or not
static _hasUserCompleted($a_obj_id, $a_user_id)
Lookup user object completion.
$root
Definition: sabredav.php:45
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _getCourseCompletionForUser($a_id, $a_user)
Get the completion of a SCORM module for a given user.
Class ilObjSCORMLearningModule.
$data
Definition: bench.php:6
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTaskInformations()

ilCertificateMigrationJob::getTaskInformations ( )
Returns
array

Definition at line 304 of file class.ilCertificateMigrationJob.php.

References $data, $db, $DIC, and $result.

Referenced by run().

304  : array
305  {
306  global $DIC;
307 
308  $db = $DIC->database();
309 
310  $result = $db->queryF(
311  'SELECT * FROM ' . $this->db_table . ' WHERE usr_id = %s',
312  ['integer'],
313  [$this->user_id]
314  );
315  if ($result->numRows() == 1) {
316  $data = $db->fetchAssoc($result);
317  return $data;
318  }
319  return [];
320  }
$result
global $DIC
Definition: saml.php:7
$data
Definition: bench.php:6
+ Here is the caller graph for this function:

◆ getTestCertificates()

ilCertificateMigrationJob::getTestCertificates ( )
protected

Get certificates for test objects.

Returns
array

Definition at line 460 of file class.ilCertificateMigrationJob.php.

References $data, $session, ilObjectFactory\getInstanceByObjId(), and ilObjTest\getTestObjIdsWithActiveForUserId().

Referenced by run().

460  : array
461  {
462  $this->logger->info('Trying to get test certificates for user: ' . $this->user_id);
463 
464  $data = array();
465 
466  foreach (\ilObjTest::getTestObjIdsWithActiveForUserId($this->user_id) as $objectId) {
467  $object = \ilObjectFactory::getInstanceByObjId($objectId, false);
468  if (!$object || !($object instanceof \ilObjTest)) {
469  $this->logger->debug('Found inconsistent object, skipped migration: ' . $objectId);
470  continue;
471  }
472 
473  $session = new \ilTestSessionFactory($object);
474  $session = $session->getSession(null);
475  if ($object->canShowCertificate($session, $session->getUserId(), $session->getActiveId())) {
476  $data[] = $objectId;
477  }
478  }
479 
480  $this->logger->info('Got ' . count($data) . ' test certificates for user: ' . $this->user_id);
481  return $data;
482  }
$session
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static getTestObjIdsWithActiveForUserId($userId)
$data
Definition: bench.php:6
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initTask()

ilCertificateMigrationJob::initTask ( )
protected
Returns
void

Definition at line 325 of file class.ilCertificateMigrationJob.php.

References $user_id, and ilCertificateMigrationJobDefinitions\CERT_MIGRATION_STATE_INIT.

Referenced by run().

326  {
327  $this->logger->debug('Insert new entry for user with id: ' . $this->user_id);
328  $this->db->insert($this->db_table, [
329  'id' => ['integer', $this->db->nextId($this->db_table)],
330  'usr_id' => ['integer', $this->user_id],
331  'lock' => ['integer', false],
332  'found_items' => ['integer', 0],
333  'processed_items' => ['integer', 0],
334  'migrated_items' => ['integer', 0],
335  'progress' => ['integer', 0],
337  'started_ts' => ['integer', strtotime('now')],
338  'finished_ts' => null,
339  ]);
340  }
+ Here is the caller graph for this function:

◆ isStateless()

ilCertificateMigrationJob::isStateless ( )
Returns
bool returns true iff the job's output ONLY depends on the input. Stateless task results may be cached!

Implements ILIAS\BackgroundTasks\Task\Job.

Definition at line 267 of file class.ilCertificateMigrationJob.php.

267  : bool
268  {
269  return true;
270  }

◆ run()

ilCertificateMigrationJob::run ( array  $input,
Observer  $observer 
)
Parameters

Implements ILIAS\BackgroundTasks\Task\Job.

Definition at line 71 of file class.ilCertificateMigrationJob.php.

References $certificate, $certificates, $DIC, $f_time, ILIAS\BackgroundTasks\Implementation\Tasks\AbstractTask\$output, $template, $test, $type, $user, ilObjUserTracking\_enabledLearningProgress(), ilLPStatus\_lookupStatusChanged(), ilCertificateMigrationJobDefinitions\CERT_MIGRATION_JOB_TABLE, ilCertificateMigrationJobDefinitions\CERT_MIGRATION_RETURN_ALREADY_RUNNING, ilCertificateMigrationJobDefinitions\CERT_MIGRATION_RETURN_LOCKED, ilCertificateMigrationJobDefinitions\CERT_MIGRATION_RETURN_SUCCESS, ilCertificateMigrationJobDefinitions\CERT_MIGRATION_STATE_FAILED, ilCertificateMigrationJobDefinitions\CERT_MIGRATION_STATE_FINISHED, ilCertificateMigrationJobDefinitions\CERT_MIGRATION_STATE_RUNNING, getCourseCertificates(), ilCourseParticipants\getDateTimeOfPassed(), getExerciseCertificates(), getScormCertificates(), getTaskInformations(), getTestCertificates(), ILIAS\BackgroundTasks\Observer\heartbeat(), IL_CAL_DATETIME, IL_CAL_UNIX, ILIAS_VERSION_NUMERIC, initTask(), ilCertificate\isObjectActive(), and updateTask().

72  {
73  global $DIC;
74 
75  $this->user_id = $input[0]->getValue();
76  $user = new ilObjUser($this->user_id);
77 
78  $this->tree = $DIC->repositoryTree();
79  $this->db = $DIC->database();
81  $this->event_handler = $DIC['ilAppEventHandler'];
82  $this->task_factory = $DIC->backgroundTasks()->taskFactory();
83  $this->logger = $DIC->logger()->cert();
84 
85  $certificates = [];
86  $output = new IntegerValue();
87 
88  $this->logger->debug('Started at ' . ($st_time = date('d.m.Y H:i:s')) . ' for user with id: ' . $this->user_id);
89 
90  $task_informations = $this->getTaskInformations();
91  if (empty($task_informations)) {
92  $this->initTask();
93  }
94  if ($task_informations['state'] === \ilCertificateMigrationJobDefinitions::CERT_MIGRATION_STATE_RUNNING) {
95  $this->logger->info('Parallel execution protection. Stopped task for user ' . $this->user_id . ', because it is already running.');
97  return $output;
98  }
99  if ($task_informations['lock'] == true) {
100  // we should never get here if no fatal error occures
101  $this->logger->info('Parallel execution protection. Stopped task for user ' . $this->user_id . ', because it is locked.');
103  return $output;
104  }
105 
106  $this->updateTask([
107  'lock' => true,
109  ]);
110 
111  $found_items = 0;
112 
113  try {
114  // collect all data
115  $this->logger->info('Start collection certificate data for user: ' . $this->user_id);
116 
117  foreach ($this->types as $type) {
118  if ($type === 'scorm') {
120  } elseif ($type === 'test') {
122  } elseif ($type === 'exercise') {
124  } elseif ($type === 'course') {
126  }
127 
128  $found_items += count($certificates[$type]);
129  $observer->heartbeat();
130  }
131 
132  $this->updateTask(['found_items' => $found_items]);
133  $this->logger->debug('Found overall ' . $found_items . ' items for user with id: ' . $this->user_id);
134  $this->logger->info('Finished collecting certificate data for user: ' . $this->user_id);
135 
136  $processed_items = 0;
137 
138  $template_repository = new ilCertificateTemplateRepository($this->db);
139  $repository = new ilUserCertificateRepository($this->db);
140  $value_replacement = new ilCertificateValueReplacement();
141 
142  $this->logger->info('Start migrating certificates for user: ' . $user->getId());
143 
144  foreach ($this->types as $type) {
145  $this->logger->info(sprintf('Start preparing "%s" certificates', $type));
146 
147  switch ($type) {
148  case 'test':
149  $class = ilTestPlaceholderValues::class;
150  break;
151 
152  case 'scorm':
153  $class = ilScormPlaceholderValues::class;
154  break;
155 
156  case 'exercise':
157  $class = ilExercisePlaceholderValues::class;
158  break;
159 
160  case 'course':
161  $class = ilCoursePlaceholderValues::class;
162  break;
163  }
164  $placeholder_values = new $class();
165 
166  foreach ($certificates[$type] as $certificate_id) {
167  if (\ilCertificate::isObjectActive($certificate_id)) {
168  try {
169  switch (true) {
170  case $type == 'course':
171  $acquireDate = new ilDateTime(
172  ilCourseParticipants::getDateTimeOfPassed($certificate_id, $user->getId()),
174  );
175  $acquireTimestamp = $acquireDate->get(IL_CAL_UNIX);
176  break;
177  case $type == 'test' && !ilObjUserTracking::_enabledLearningProgress():
178  $test = new ilObjTest($certificate_id, false);
179  $acquireTimestamp = $test
180  ->getTestResult($test->getActiveIdOfUser($user->getId()))['test']['result_tstamp'];
181  break;
182  default:
183  $acquireDate = new ilDateTime(
184  ilLPStatus::_lookupStatusChanged($certificate_id, $user->getId()),
186  );
187  $acquireTimestamp = $acquireDate->get(IL_CAL_UNIX);
188  }
189  } catch (Exception $exception) {
190  $this->logger->warning(sprintf('Unable to gather aquired timestamp for certificate %s', $certificate_id));
191  $acquireTimestamp = null;
192  }
193  if ($acquireTimestamp === null || 0 === (int) $acquireTimestamp) {
194  $acquireTimestamp = time();
195  }
196  $template = null;
197  try {
198  $template = $template_repository->fetchFirstCreatedTemplate($certificate_id);
199  } catch (Exception $exception) {
200  $this->logger->warning(sprintf('Unable to gather template for certificate %s. Skipped.', $certificate_id));
201  }
202  if ($template) {
204  $template->getId(),
205  $certificate_id,
206  $type,
207  $user->getId(),
208  $user->getFullname(),
209  $acquireTimestamp,
210  $value_replacement->replace(
211  $placeholder_values->getPlaceholderValues($user->getId(), $certificate_id),
212  $template->getCertificateContent()
213  ) ?? '',
214  json_encode($placeholder_values->getPlaceholderValues($user->getId(), $certificate_id)) ?? '',
215  null,
216  $template->getVersion(),
218  true,
219  $template->getBackgroundImagePath() ?? '',
220  $template->getThumbnailImagePath() ?? ''
221  );
222  $repository->save($certificate);
223  $processed_items++;
224  }
225  }
226  $this->updateTask([
227  'processed_items' => $processed_items,
228  'progress' => ($processed_items / $found_items) * 100
229  ]);
230 
231  $observer->heartbeat();
232  }
233  $this->logger->info(sprintf('Finished preparing "%s" certificates', $type));
234  }
235 
236  $this->logger->info('Finished migrating certificates for user: ' . $user->getId());
237  } catch (\Exception $e) {
238  $this->logger->error($e->getMessage(), 'error');
239  $this->updateTask([
240  'lock' => false,
241  'processed_items' => $processed_items,
243  ]);
244  $output->setValue((int) $e->getCode());
245  return $output;
246  }
247 
249 
250  $this->logger->debug('Finished at ' . ($f_time = date('d.m.Y H:i:s')) . ' after ' . (strtotime($f_time) - strtotime($st_time)) . ' seconds');
251  $this->updateTask([
252  'lock' => false,
253  'finished_ts' => $f_time,
254  'processed_items' => $processed_items,
256  ]);
257 
258  $user->writePref('cert_migr_finished', 1);
259 
260  return $output;
261  }
const IL_CAL_DATETIME
const ILIAS_VERSION_NUMERIC
$template
$type
global $DIC
Definition: saml.php:7
static getDateTimeOfPassed($a_obj_id, $a_usr_id)
heartbeat()
I'm still alive! If your calculation takes a really long time don't forget to use the heartbeat...
$certificates
Definition: metarefresh.php:39
getTestCertificates()
Get certificates for test objects.
const IL_CAL_UNIX
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
Definition: example_052.php:77
static _enabledLearningProgress()
check wether learing progress is enabled or not
$f_time
Definition: buildRTE.php:82
getScormCertificates()
Get certificates for scorm objects.
Date and time handling
static _lookupStatusChanged($a_obj_id, $a_user_id)
Lookup status changed.
$user
Definition: migrateto20.php:57
getExerciseCertificates()
Get certificates for exercise objects.
getCourseCertificates()
Get certificates for course objects.
static isObjectActive($a_obj_id)
$test
Definition: Utf8Test.php:84
+ Here is the call graph for this function:

◆ updateTask()

ilCertificateMigrationJob::updateTask ( array  $data)
protected
Parameters
array$data
Returns
void

Definition at line 346 of file class.ilCertificateMigrationJob.php.

Referenced by run().

347  {
348  $updata = [];
349  if (array_key_exists('lock', $data)) {
350  $updata['lock'] = ['integer', $data['lock']];
351  }
352  if (array_key_exists('found_items', $data)) {
353  $updata['found_items'] = ['integer', $data['found_items']];
354  }
355  if (array_key_exists('processed_items', $data)) {
356  $updata['processed_items'] = ['integer', $data['processed_items']];
357  }
358  if (array_key_exists('migrated_items', $data)) {
359  $updata['migrated_items'] = ['integer', $data['migrated_items']];
360  }
361  if (array_key_exists('progress', $data)) {
362  $updata['progress'] = ['integer', $data['progress']];
363  }
364  if (array_key_exists('state', $data)) {
365  $updata['state'] = ['text', $data['state']];
366  }
367  if (array_key_exists('finished_ts', $data)) {
368  if (is_string($data['finished_ts'])) {
369  $data['finished_ts'] = strtotime($data['finished_ts']);
370  }
371  $updata['finished_ts'] = ['integer', $data['finished_ts']];
372  }
373  $this->logger->debug('Update data: ' . json_encode($updata));
374  if (!empty($updata)) {
375  $this->logger->debug('Update entry for user with id: ' . $this->user_id);
376  $this->db->update($this->db_table, $updata, ['usr_id' => ['integer', $this->user_id] ]);
377  }
378  }
$data
Definition: bench.php:6
+ Here is the caller graph for this function:

Field Documentation

◆ $db

ilCertificateMigrationJob::$db
protected

Definition at line 47 of file class.ilCertificateMigrationJob.php.

Referenced by getTaskInformations().

◆ $db_table

ilCertificateMigrationJob::$db_table
protected

Definition at line 38 of file class.ilCertificateMigrationJob.php.

◆ $event_handler

ilCertificateMigrationJob::$event_handler
protected

Definition at line 50 of file class.ilCertificateMigrationJob.php.

◆ $logger

ilCertificateMigrationJob::$logger
private

Definition at line 56 of file class.ilCertificateMigrationJob.php.

◆ $task_factory

ilCertificateMigrationJob::$task_factory
protected

Definition at line 53 of file class.ilCertificateMigrationJob.php.

◆ $tree

ilCertificateMigrationJob::$tree
protected

Definition at line 44 of file class.ilCertificateMigrationJob.php.

◆ $types

ilCertificateMigrationJob::$types
private
Initial value:
= [
'test',
'scorm',
'exercise',
'course'
]

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

◆ $user_id

ilCertificateMigrationJob::$user_id
protected

Definition at line 41 of file class.ilCertificateMigrationJob.php.

Referenced by initTask().


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