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

Abstract class ilLPStatus for all learning progress modes E.g ilLPStatusManual, ilLPStatusObjectives ... More...

+ Inheritance diagram for ilLPStatus:
+ Collaboration diagram for ilLPStatus:

Public Member Functions

 __construct ($a_obj_id)
 
 _updateStatus ($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
 New status handling (st: status, nr: accesses, p: percentage, t: time spent, m: mark) More...
 
 determinePercentage ($a_obj_id, $a_usr_id, $a_obj=null)
 Determine percentage. More...
 
 determineStatus ($a_obj_id, $a_usr_id, $a_obj=null)
 Determine status. More...
 
 refreshStatus ($a_obj_id, $a_users=null)
 Refresh status. More...
 

Static Public Member Functions

static _getCountNotAttempted ($a_obj_id)
 
static _getNotAttempted ($a_obj_id)
 
static _getCountInProgress ($a_obj_id)
 
static _getInProgress ($a_obj_id)
 
static _getCountCompleted ($a_obj_id)
 
static _getCompleted ($a_obj_id)
 
static _getFailed ($a_obj_id)
 
static _getCountFailed ()
 
static _getStatusInfo ($a_obj_id)
 
static _getTypicalLearningTime ($a_obj_id)
 
static checkStatusForObject ($a_obj_id, $a_users=false)
 This function checks whether the status for a given number of users is dirty and must be recalculated. More...
 
static writeStatus ($a_obj_id, $a_user_id, $a_status, $a_percentage=false, $a_force_per=false)
 Write status for user and object. More...
 
static setInProgressIfNotAttempted ($a_obj_id, $a_user_id)
 This function shoudl be clalled for normal "read events". More...
 
static setAllDirty ()
 Sets all status to dirty. More...
 
static setDirty ($a_obj_id)
 Sets status of an object to dirty. More...
 
static _lookupStatus ($a_obj_id, $a_user_id, $a_create=true)
 Lookup status. More...
 
static _lookupPercentage ($a_obj_id, $a_user_id)
 Lookup percentage. More...
 
static _hasUserCompleted ($a_obj_id, $a_user_id)
 Lookup user object completion. More...
 
static _lookupStatusChanged ($a_obj_id, $a_user_id)
 Lookup status changed. More...
 
static _lookupCompletedForObject ($a_obj_id, $a_user_ids=null)
 Get completed users for object. More...
 
static _lookupFailedForObject ($a_obj_id, $a_user_ids=null)
 Get failed users for object. More...
 
static _lookupInProgressForObject ($a_obj_id, $a_user_ids=null)
 Get in progress users for object. More...
 
static preloadListGUIData ($a_obj_ids)
 
static getListGUIStatus ($a_obj_id, $a_image_only=false)
 

Data Fields

 $obj_id = null
 
 $db = null
 
const LP_STATUS_NOT_ATTEMPTED = 'trac_no_attempted'
 
const LP_STATUS_IN_PROGRESS = 'trac_in_progress'
 
const LP_STATUS_COMPLETED = 'trac_completed'
 
const LP_STATUS_FAILED = 'trac_failed'
 
const LP_STATUS_NOT_ATTEMPTED_NUM = 0
 
const LP_STATUS_IN_PROGRESS_NUM = 1
 
const LP_STATUS_COMPLETED_NUM = 2
 
const LP_STATUS_FAILED_NUM = 3
 
const LP_STATUS_REGISTERED = 'trac_registered'
 
const LP_STATUS_NOT_REGISTERED = 'trac_not_registered'
 
const LP_STATUS_PARTICIPATED = 'trac_participated'
 
const LP_STATUS_NOT_PARTICIPATED = 'trac_not_participated'
 

Static Public Attributes

static $list_gui_cache
 

Static Protected Member Functions

static raiseEvent ($a_obj_id, $a_usr_id, $a_status, $a_percentage)
 
static _lookupStatusForObject ($a_obj_id, $a_status, $a_user_ids=null)
 Get users with given status for object. More...
 
static validateLPForObjects ($a_user_id, $a_obj_ids, $a_parent_ref_id)
 Process given objects for lp-relevance. More...
 
static checkLPModesForObjects ($a_obj_ids, array &$a_coll_obj_ids)
 Process lp modes for given objects. More...
 
static getLPStatusForObjects ($a_user_id, $a_obj_ids)
 Get LP status for given objects (and user) More...
 

Detailed Description

Abstract class ilLPStatus for all learning progress modes E.g ilLPStatusManual, ilLPStatusObjectives ...

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
$Id$

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

Constructor & Destructor Documentation

◆ __construct()

ilLPStatus::__construct (   $a_obj_id)

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

References $ilDB.

39  {
40  global $ilDB;
41 
42  $this->obj_id = $a_obj_id;
43  $this->db = $ilDB;
44  }
global $ilDB

Member Function Documentation

◆ _getCompleted()

static ilLPStatus::_getCompleted (   $a_obj_id)
static

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

References array.

Referenced by ilTimingCache\readObjectInformation().

72  {
73  return array();
74  }
Create styles array
The data for the language used.
+ Here is the caller graph for this function:

◆ _getCountCompleted()

static ilLPStatus::_getCountCompleted (   $a_obj_id)
static

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

67  {
68  return 0;
69  }

◆ _getCountFailed()

static ilLPStatus::_getCountFailed ( )
static

Definition at line 81 of file class.ilLPStatus.php.

82  {
83  return 0;
84  }

◆ _getCountInProgress()

static ilLPStatus::_getCountInProgress (   $a_obj_id)
static

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

57  {
58  return 0;
59  }

◆ _getCountNotAttempted()

static ilLPStatus::_getCountNotAttempted (   $a_obj_id)
static

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

47  {
48  return 0;
49  }

◆ _getFailed()

static ilLPStatus::_getFailed (   $a_obj_id)
static

Definition at line 76 of file class.ilLPStatus.php.

References array.

77  {
78  return array();
79  }
Create styles array
The data for the language used.

◆ _getInProgress()

static ilLPStatus::_getInProgress (   $a_obj_id)
static

Definition at line 61 of file class.ilLPStatus.php.

References array.

62  {
63  return array();
64  }
Create styles array
The data for the language used.

◆ _getNotAttempted()

static ilLPStatus::_getNotAttempted (   $a_obj_id)
static

Definition at line 51 of file class.ilLPStatus.php.

References array.

52  {
53  return array();
54  }
Create styles array
The data for the language used.

◆ _getStatusInfo()

static ilLPStatus::_getStatusInfo (   $a_obj_id)
static

Definition at line 86 of file class.ilLPStatus.php.

References array.

87  {
88  return array();
89  }
Create styles array
The data for the language used.

◆ _getTypicalLearningTime()

static ilLPStatus::_getTypicalLearningTime (   $a_obj_id)
static

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

References ilMDEducational\_getTypicalLearningTimeSeconds().

92  {
93  include_once 'Services/MetaData/classes/class.ilMDEducational.php';
95  }
static _getTypicalLearningTimeSeconds($a_rbac_id, $a_obj_id=0)
+ Here is the call graph for this function:

◆ _hasUserCompleted()

static ilLPStatus::_hasUserCompleted (   $a_obj_id,
  $a_user_id 
)
static

Lookup user object completion.

Parameters
int$a_obj_id
int$a_user_id
Returns
bool

Definition at line 603 of file class.ilLPStatus.php.

Referenced by ilConditionHandler\_checkCondition(), ilObjSAHSLearningModuleAccess\_lookupUserCertificate(), ilTimingCache\_showWarning(), ilObjSAHSLearningModuleAccess\checkCondition(), ilObjStudyProgramme\getCompletedCourses(), ilSCORMVerificationTableGUI\getItems(), ilCourseStart\isFullfilled(), and ilContainerStartObjects\isFullfilled().

604  {
605  return (self::_lookupStatus($a_obj_id, $a_user_id) == self::LP_STATUS_COMPLETED_NUM);
606  }
+ Here is the caller graph for this function:

◆ _lookupCompletedForObject()

static ilLPStatus::_lookupCompletedForObject (   $a_obj_id,
  $a_user_ids = null 
)
static

Get completed users for object.

Parameters
int$a_obj_id
array$a_user_ids
Returns
array

Definition at line 682 of file class.ilLPStatus.php.

683  {
684  return self::_lookupStatusForObject($a_obj_id, self::LP_STATUS_COMPLETED_NUM, $a_user_ids);
685  }

◆ _lookupFailedForObject()

static ilLPStatus::_lookupFailedForObject (   $a_obj_id,
  $a_user_ids = null 
)
static

Get failed users for object.

Parameters
int$a_obj_id
array$a_user_ids
Returns
array

Definition at line 694 of file class.ilLPStatus.php.

695  {
696  return self::_lookupStatusForObject($a_obj_id, self::LP_STATUS_FAILED_NUM, $a_user_ids);
697  }

◆ _lookupInProgressForObject()

static ilLPStatus::_lookupInProgressForObject (   $a_obj_id,
  $a_user_ids = null 
)
static

Get in progress users for object.

Parameters
int$a_obj_id
array$a_user_ids
Returns
array

Definition at line 706 of file class.ilLPStatus.php.

707  {
708  return self::_lookupStatusForObject($a_obj_id, self::LP_STATUS_IN_PROGRESS_NUM, $a_user_ids);
709  }

◆ _lookupPercentage()

static ilLPStatus::_lookupPercentage (   $a_obj_id,
  $a_user_id 
)
static

Lookup percentage.

Parameters
int$a_obj_idobject id
int$a_user_iduser id

Definition at line 581 of file class.ilLPStatus.php.

References $ilDB.

Referenced by ilLearningProgressBaseGUI\__appendLPDetails(), ilLTIAppEventListener\doCronUpdate(), and ilObjSCORMLearningModule\importRaw().

582  {
583  global $ilDB;
584 
585  $set = $ilDB->query(
586  "SELECT percentage FROM ut_lp_marks WHERE " .
587  " status_dirty = " . $ilDB->quote(0, "integer") .
588  " AND usr_id = " . $ilDB->quote($a_user_id, "integer") .
589  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
590  );
591  if ($rec = $ilDB->fetchAssoc($set)) {
592  return $rec["percentage"];
593  }
594  }
global $ilDB
+ Here is the caller graph for this function:

◆ _lookupStatus()

static ilLPStatus::_lookupStatus (   $a_obj_id,
  $a_user_id,
  $a_create = true 
)
static

Lookup status.

Parameters
int$a_obj_idobject id
int$a_user_iduser id
bool$a_create

Definition at line 548 of file class.ilLPStatus.php.

References $ilDB, and ilLPStatusWrapper\_updateStatus().

Referenced by ilLearningProgressBaseGUI\__readStatus(), ilObjSAHSLearningModuleAccess\checkCondition(), ilObjCourse\checkLPStatusSync(), ilLTIAppEventListener\doCronUpdate(), ilCourseLPBadge\evaluate(), ilCourseMailTemplateTutorContext\getDescription(), ilScormMailTemplateLPContext\getDescription(), ilSoapSCORMAdministration\getSCORMCompletionStatus(), ilObjSCORMInitData\getStatus(), ilObjSCORMLearningModule\importRaw(), ilLearningProgressBaseGUI\initEditUserForm(), and ilTestPassFinishTasks\updateLearningProgressAfterPassFinishedIsWritten().

549  {
550  global $ilDB;
551 
552  $set = $ilDB->query(
553  "SELECT status FROM ut_lp_marks WHERE " .
554  " status_dirty = " . $ilDB->quote(0, "integer") .
555  " AND usr_id = " . $ilDB->quote($a_user_id, "integer") .
556  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
557  );
558  if ($rec = $ilDB->fetchAssoc($set)) {
559  return $rec["status"];
560  } elseif ((bool) $a_create) {
561  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
562  ilLPStatusWrapper::_updateStatus($a_obj_id, $a_user_id);
563  $set = $ilDB->query(
564  "SELECT status FROM ut_lp_marks WHERE " .
565  " status_dirty = " . $ilDB->quote(0, "integer") .
566  " AND usr_id = " . $ilDB->quote($a_user_id, "integer") .
567  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
568  );
569  if ($rec = $ilDB->fetchAssoc($set)) {
570  return $rec["status"];
571  }
572  }
573  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _lookupStatusChanged()

static ilLPStatus::_lookupStatusChanged (   $a_obj_id,
  $a_user_id 
)
static

Lookup status changed.

Parameters
int$a_obj_idobject id
int$a_user_iduser id

Definition at line 614 of file class.ilLPStatus.php.

References $ilDB, and ilLPStatusWrapper\_updateStatus().

Referenced by ilCertificateAdapter\getUserCompletionDate().

615  {
616  global $ilDB;
617 
618  $set = $ilDB->query(
619  "SELECT status_changed FROM ut_lp_marks WHERE " .
620  " status_dirty = " . $ilDB->quote(0, "integer") .
621  " AND usr_id = " . $ilDB->quote($a_user_id, "integer") .
622  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
623  );
624  if ($rec = $ilDB->fetchAssoc($set)) {
625  return $rec["status_changed"];
626  } else {
627  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
628  ilLPStatusWrapper::_updateStatus($a_obj_id, $a_user_id);
629  $set = $ilDB->query(
630  "SELECT status_changed FROM ut_lp_marks WHERE " .
631  " status_dirty = " . $ilDB->quote(0, "integer") .
632  " AND usr_id = " . $ilDB->quote($a_user_id, "integer") .
633  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
634  );
635  if ($rec = $ilDB->fetchAssoc($set)) {
636  return $rec["status_changed"];
637  }
638  }
639  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _lookupStatusForObject()

static ilLPStatus::_lookupStatusForObject (   $a_obj_id,
  $a_status,
  $a_user_ids = null 
)
staticprotected

Get users with given status for object.

Parameters
int$a_obj_id
int$a_status
array$a_user_ids
Returns
array

Definition at line 649 of file class.ilLPStatus.php.

References $ilDB, $res, and array.

650  {
651  global $ilDB;
652 
653  $sql = "SELECT usr_id, status, status_dirty FROM ut_lp_marks" .
654  " WHERE obj_id = " . $ilDB->quote($a_obj_id, "integer") .
655  " AND status = " . $ilDB->quote($a_status, "integer");
656  if ($a_user_ids) {
657  $sql .= " AND " . $ilDB->in("usr_id", $a_user_ids, "", "integer");
658  }
659 
660  $set = $ilDB->query($sql);
661  $res = array();
662  while ($rec = $ilDB->fetchAssoc($set)) {
663  if ($res["status_dirty"]) {
664  // update status and check again
665  if (self::_lookupStatus($a_obj_id, $rec["usr_id"]) != $a_status) {
666  continue;
667  }
668  }
669  $res[] = $rec["usr_id"];
670  }
671 
672  return $res;
673  }
foreach($_POST as $key=> $value) $res
Create styles array
The data for the language used.
global $ilDB

◆ _updateStatus()

ilLPStatus::_updateStatus (   $a_obj_id,
  $a_usr_id,
  $a_obj = null,
  $a_percentage = false,
  $a_force_raise = false 
)

New status handling (st: status, nr: accesses, p: percentage, t: time spent, m: mark)

Learning progress:

Added determine Status to:

Updating the status:

- ilLearningProgress->_tracProgress() added to:

  • ilLPStatusWrapper::_updateStatus($a_obj_id, $a_user_id); added to: – ilInfoScreenGUI->saveProgress() – ilLMPresentation->ilPage() – ilLPListOfObjectsGUI->updateUser() – ilCourseObjectiveResult->reset() – ilCourseObjectiveResult->__updatePassed() – ilEventParticipants->updateUser() – ilEventParticipants->_updateParticipation() – ilEventParticipants->_register() – ilEventParticipants->_unregister() – ilExerciseMembers->assignMember() – ilExerciseMembers->deassignMember() – ilExerciseMembers->ilClone() – ilExerciseMembers->writeStatus() – ilExerciseMembers->writeReturned() – ilSCORM13Player->writeGObjective() – ilObjSCORM2004LearningModule->deleteTrackingDataOfUsers() – ilObjSCORM2004LearningModule->importSuccess() – ilObjSCORM2004LearningModuleGUI->confirmedDeleteTracking() – ilSCORM13Player->removeCMIData() – ilSCORM13Player->setCMIData() – ilObjSCORMLearningModule->importSuccess() – ilObjSCORMLearningModule->importRaw() – ilObjSCORMLearningModuleGUI->confirmedDelete() – ilObjSCORMLearningModuleGUI->decreaseAttempt() – ilObjSCORMTracking->store() – ilObjSCORMTracking-> _insertTrackData() – ilSCORMPresentationGUI->increase_attemptAndsave_module_version() – ilTestScoringGUI->setPointsManual() – ilTestSession->increaseTestPass() – ilTestSession->saveToDb()
  • ilLPStatusWrapper::_refreshStatus($a_ojb_id); aufgenommen in: – ilCourseObjective->add() – ilCourseObjective->delete() – ilCourseObjective->deleteAll() – ilExerciseMembers->delete() – ilSCORM13Package->removeCMIData() – ilAICCCourse->delete() – ilAICCUnit->delete() – ilObjAICCLearningModule->delete() – ilSCORMItem->delete() – ilLPStatusWrapper->update() – ilLPListOfSettingsGUI->assign() – ilLPListOfSettingsGUI->deassign() – ilLPListOfSettingsGUI->groupMaterials() – ilLPListOfSettingsGUI->releaseMaterials() – ilObjTestGUI->confirmDeleteAllUserResultsObject move to ilObjTest but this can ba called for each single question – ilConditionHandlerGUI->updateCondition()
  • external time/access values for read events ilChangeEvent::_recordReadEvent($a_obj_id, $a_user_id, false, $attempts, $time); – ilObjSCORMTracking->_syncReadEvent in ilObjSCORMTracking->store() (add to refresh) – ilSCORM2004Tracking->_syncReadEvent in ilSCORM13Player->setCMIData() Write status
Parameters

Definition at line 201 of file class.ilLPStatus.php.

References $changed, $log, determinePercentage(), determineStatus(), and ilLoggerFactory\getLogger().

202  {
204  $log->debug(sprintf(
205  "obj_id: %s, user id: %s, object: %s",
206  $a_obj_id,
207  $a_usr_id,
208  (is_object($a_obj) ? get_class($a_obj) : 'null')
209  ));
210 
211  $status = $this->determineStatus($a_obj_id, $a_usr_id, $a_obj);
212  $percentage = $this->determinePercentage($a_obj_id, $a_usr_id, $a_obj);
213  $changed = self::writeStatus($a_obj_id, $a_usr_id, $status, $percentage);
214 
215  // ak: I don't think that this is a good way to fix 15529, we should not
216  // raise the event, if the status does not change imo.
217  // for now the changes in the next line just prevent the event being raised twice
218  if (!$changed && (bool) $a_force_raise) { // #15529
219  self::raiseEvent($a_obj_id, $a_usr_id, $status, $percentage);
220  }
221  }
determineStatus($a_obj_id, $a_usr_id, $a_obj=null)
Determine status.
static getLogger($a_component_id)
Get component logger.
determinePercentage($a_obj_id, $a_usr_id, $a_obj=null)
Determine percentage.
+ Here is the call graph for this function:

◆ checkLPModesForObjects()

static ilLPStatus::checkLPModesForObjects (   $a_obj_ids,
array $a_coll_obj_ids 
)
staticprotected

Process lp modes for given objects.

Parameters
array$a_obj_ids
Returns
array

Definition at line 745 of file class.ilLPStatus.php.

References $obj_id, $valid, ilLPObjSettings\_lookupDBModeForObjects(), array, ilLPCollection\getCollectionModes(), ilObjectLP\getInstance(), ilLPObjSettings\LP_MODE_DEACTIVATED, and ilLPObjSettings\LP_MODE_UNDEFINED.

746  {
747  $valid = array();
748 
749  // all lp modes with collections (gathered separately)
750  include_once "Services/Tracking/classes/collection/class.ilLPCollection.php";
751  $coll_modes = ilLPCollection::getCollectionModes();
752 
753  include_once "Services/Tracking/classes/class.ilLPObjSettings.php";
754 
755  // check if objects have LP activated at all (DB entries)
756  $existing = ilLPObjSettings::_lookupDBModeForObjects($a_obj_ids);
757  foreach ($existing as $obj_id => $obj_mode) {
758  if ($obj_mode != ilLPObjSettings::LP_MODE_DEACTIVATED) {
760 
761  if (in_array($obj_mode, $coll_modes)) {
762  $a_coll_obj_ids[] = $obj_id;
763  }
764  }
765  }
766 
767  // missing objects in DB (default mode)
768  include_once "Services/Object/classes/class.ilObjectLP.php";
769  if (sizeof($existing) != sizeof($a_obj_ids)) {
770  foreach (array_diff($a_obj_ids, $existing) as $obj_id) {
771  $olp = ilObjectLP::getInstance($obj_id);
772  $mode = $olp->getCurrentMode();
774  // #11141
775  unset($valid[$obj_id]);
776  } elseif ($mode != ilLPObjSettings::LP_MODE_UNDEFINED) {
778 
779  if (in_array($mode, $coll_modes)) {
780  $a_coll_obj_ids[] = $obj_id;
781  }
782  }
783  }
784  unset($existing);
785  }
786 
787  return array_values($valid);
788  }
$valid
static _lookupDBModeForObjects(array $a_obj_ids)
Create styles array
The data for the language used.
static getInstance($a_obj_id)
+ Here is the call graph for this function:

◆ checkStatusForObject()

static ilLPStatus::checkStatusForObject (   $a_obj_id,
  $a_users = false 
)
static

This function checks whether the status for a given number of users is dirty and must be recalculated.

"Missing" records are not inserted!

Parameters

Definition at line 253 of file class.ilLPStatus.php.

References $ilDB, $r, and ilLPStatusFactory\_getInstance().

Referenced by ilTrQuery\refreshObjectsStatus().

254  {
255  global $ilDB;
256 
257  //@todo: there maybe the need to add extra handling for sessions here, since the
258  // "in progress" status is time dependent here. On the other hand, if they registered
259  // to the session, they already accessed the course and should have a "in progress"
260  // anyway. But the status on the session itself may not be correct.
261 
262  $sql = "SELECT usr_id FROM ut_lp_marks WHERE " .
263  " obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
264  " status_dirty = " . $ilDB->quote(1, "integer");
265  if (is_array($a_users) && count($a_users) > 0) {
266  $sql .= " AND " . $ilDB->in("usr_id", $a_users, false, "integer");
267  }
268  $set = $ilDB->query($sql);
269  $dirty = false;
270  if ($rec = $ilDB->fetchAssoc($set)) {
271  $dirty = true;
272  }
273 
274  // check if any records are missing
275  $missing = false;
276  if (!$dirty && is_array($a_users) && count($a_users) > 0) {
277  $set = $ilDB->query("SELECT count(usr_id) cnt FROM ut_lp_marks WHERE " .
278  " obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
279  $ilDB->in("usr_id", $a_users, false, "integer"));
280  $r = $ilDB->fetchAssoc($set);
281  if ($r["cnt"] < count($a_users)) {
282  $missing = true;
283  }
284  }
285 
286  // refresh status, if records are dirty or missing
287  if ($dirty || $missing) {
288  require_once "Services/Tracking/classes/class.ilLPStatusFactory.php"; // #13330
289  $trac_obj = ilLPStatusFactory::_getInstance($a_obj_id);
290  $trac_obj->refreshStatus($a_obj_id, $a_users);
291  }
292  }
static _getInstance($a_obj_id, $a_mode=null)
$r
Definition: example_031.php:79
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ determinePercentage()

ilLPStatus::determinePercentage (   $a_obj_id,
  $a_usr_id,
  $a_obj = null 
)

Determine percentage.

Parameters

Definition at line 229 of file class.ilLPStatus.php.

Referenced by _updateStatus(), and refreshStatus().

230  {
231  return false;
232  }
+ Here is the caller graph for this function:

◆ determineStatus()

ilLPStatus::determineStatus (   $a_obj_id,
  $a_usr_id,
  $a_obj = null 
)

Determine status.

Parameters

Definition at line 240 of file class.ilLPStatus.php.

Referenced by ilLPStatusDownloaded\_getCompleted(), and _updateStatus().

241  {
242  return false;
243  }
+ Here is the caller graph for this function:

◆ getListGUIStatus()

static ilLPStatus::getListGUIStatus (   $a_obj_id,
  $a_image_only = false 
)
static

Definition at line 872 of file class.ilLPStatus.php.

Referenced by ilObjectListGUI\insertProperties().

873  {
874  if ($a_image_only) {
875  $image = '';
876  if (isset(self::$list_gui_cache[$a_obj_id]["image"])) {
877  $image = self::$list_gui_cache[$a_obj_id]["image"];
878  }
879 
880  return $image;
881  }
882  return self::$list_gui_cache[$a_obj_id];
883  }
+ Here is the caller graph for this function:

◆ getLPStatusForObjects()

static ilLPStatus::getLPStatusForObjects (   $a_user_id,
  $a_obj_ids 
)
staticprotected

Get LP status for given objects (and user)

Parameters
int$a_user_id
array$a_obj_ids
Returns
array

Definition at line 797 of file class.ilLPStatus.php.

References $ilDB, $obj_id, $res, $row, and array.

798  {
799  global $ilDB;
800 
801  $res = array();
802 
803  // get user lp data
804  $sql = "SELECT status, status_dirty, obj_id FROM ut_lp_marks" .
805  " WHERE " . $ilDB->in("obj_id", $a_obj_ids, "", "integer") .
806  " AND usr_id = " . $ilDB->quote($a_user_id, "integer");
807  $set = $ilDB->query($sql);
808  while ($row = $ilDB->fetchAssoc($set)) {
809  if (!$row["status_dirty"]) {
810  $res[$row["obj_id"]] = $row["status"];
811  } else {
812  $res[$row["obj_id"]] = self::_lookupStatus($row["obj_id"], $a_user_id);
813  }
814  }
815 
816  // process missing user entries (same as dirty entries, see above)
817  foreach ($a_obj_ids as $obj_id) {
818  if (!isset($res[$obj_id])) {
819  $res[$obj_id] = self::_lookupStatus($obj_id, $a_user_id);
820  if ($res[$obj_id] === null) {
821  $res[$obj_id] = self::LP_STATUS_NOT_ATTEMPTED_NUM;
822  }
823  }
824  }
825 
826  return $res;
827  }
foreach($_POST as $key=> $value) $res
Create styles array
The data for the language used.
global $ilDB

◆ preloadListGUIData()

static ilLPStatus::preloadListGUIData (   $a_obj_ids)
static

Definition at line 829 of file class.ilLPStatus.php.

References $_GET, $ilUser, $lng, $obj_id, $path, $res, $text, ilObjUserTracking\_enabledLearningProgress(), ilLearningProgressBaseGUI\_getImagePathForStatus(), ilLearningProgressBaseGUI\_getStatusText(), ilObjUserTracking\_hasLearningProgressLearner(), ilObjUserTracking\_hasLearningProgressListGUI(), array, and ilUtil\img().

Referenced by ilObjectListGUIPreloader\preload().

830  {
831  global $ilUser, $lng;
832 
833  $user_id = $ilUser->getId();
834 
835  $res = array();
836 
837  include_once("Services/Tracking/classes/class.ilObjUserTracking.php");
838  if ($ilUser->getId() != ANONYMOUS_USER_ID &&
842  // -- validate
843 
844  // :TODO: we need the parent ref id, but this is awful
845  $a_obj_ids = self::validateLPForObjects($user_id, $a_obj_ids, (int) $_GET["ref_id"]);
846 
847  // we are not handling the collections differently yet
848  $coll_obj_ids = array();
849  $a_obj_ids = self::checkLPModesForObjects($a_obj_ids, $coll_obj_ids);
850 
851 
852  // -- gather
853 
854  $res = self::getLPStatusForObjects($user_id, $a_obj_ids);
855 
856 
857  // -- render
858 
859  // value to icon
860  $lng->loadLanguageModule("trac");
861  include_once("./Services/Tracking/classes/class.ilLearningProgressBaseGUI.php");
862  foreach ($res as $obj_id => $status) {
866  }
867  }
868 
869  self::$list_gui_cache = $res;
870  }
static _getImagePathForStatus($a_status)
Get image path for status.
$_GET["client_id"]
static _getStatusText($a_status, $a_lng=null)
Get status alt text.
static _enabledLearningProgress()
check wether learing progress is enabled or not
foreach($_POST as $key=> $value) $res
$text
Definition: errorreport.php:18
$ilUser
Definition: imgupload.php:18
Create styles array
The data for the language used.
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
global $lng
Definition: privfeed.php:17
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ raiseEvent()

static ilLPStatus::raiseEvent (   $a_obj_id,
  $a_usr_id,
  $a_status,
  $a_percentage 
)
staticprotected

Definition at line 294 of file class.ilLPStatus.php.

References $log, array, and ilLoggerFactory\getLogger().

295  {
296  global $ilAppEventHandler;
297 
299  $log->debug("obj_id: " . $a_obj_id . ", user id: " . $a_usr_id . ", status: " .
300  $a_status . ", percentage: " . $a_percentage);
301 
302  $ilAppEventHandler->raise("Services/Tracking", "updateStatus", array(
303  "obj_id" => $a_obj_id,
304  "usr_id" => $a_usr_id,
305  "status" => $a_status,
306  "percentage" => $a_percentage
307  ));
308  }
Create styles array
The data for the language used.
static getLogger($a_component_id)
Get component logger.
+ Here is the call graph for this function:

◆ refreshStatus()

ilLPStatus::refreshStatus (   $a_obj_id,
  $a_users = null 
)

Refresh status.

Parameters

Definition at line 316 of file class.ilLPStatus.php.

References $failed, ilLPStatusWrapper\_getCompleted(), ilLPStatusWrapper\_getFailed(), ilLPStatusWrapper\_getInProgress(), ilLPStatusWrapper\_getNotAttempted(), ilLPStatusWrapper\_updateStatus(), and determinePercentage().

317  {
318  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
319  $not_attempted = ilLPStatusWrapper::_getNotAttempted($a_obj_id);
320  foreach ($not_attempted as $user_id) {
321  $percentage = $this->determinePercentage($a_obj_id, $user_id);
322  if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_NOT_ATTEMPTED_NUM, $percentage, true)) {
323  //self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_NOT_ATTEMPTED_NUM, $percentage);
324  }
325  }
326  $in_progress = ilLPStatusWrapper::_getInProgress($a_obj_id);
327  foreach ($in_progress as $user_id) {
328  $percentage = $this->determinePercentage($a_obj_id, $user_id);
329  if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_IN_PROGRESS_NUM, $percentage, true)) {
330  //self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_IN_PROGRESS_NUM, $percentage);
331  }
332  }
333  $completed = ilLPStatusWrapper::_getCompleted($a_obj_id);
334  foreach ($completed as $user_id) {
335  $percentage = $this->determinePercentage($a_obj_id, $user_id);
336  if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_COMPLETED_NUM, $percentage, true)) {
337  //self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_COMPLETED_NUM, $percentage);
338  }
339  }
341  foreach ($failed as $user_id) {
342  $percentage = $this->determinePercentage($a_obj_id, $user_id);
343  if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_FAILED_NUM, $percentage, true)) {
344  //self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_FAILED_NUM, $percentage);
345  }
346  }
347  if ($a_users) {
348  $missing_users = array_diff($a_users, $not_attempted+$in_progress+$completed+$failed);
349  if ($missing_users) {
350  foreach ($missing_users as $user_id) {
351  ilLPStatusWrapper::_updateStatus($a_obj_id, $user_id);
352  }
353  }
354  }
355  }
static _getInProgress($a_obj_id)
Static function to read users who have the status &#39;in_progress&#39;.
static _getCompleted($a_obj_id)
Static function to read the users who have the status &#39;completed&#39;.
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
static _getNotAttempted($a_obj_id)
Static function to read the number of user who have the status &#39;not_attempted&#39;.
static _getFailed($a_obj_id)
Static function to read the users who have the status &#39;completed&#39;.
$failed
Definition: Utf8Test.php:85
determinePercentage($a_obj_id, $a_usr_id, $a_obj=null)
Determine percentage.
+ Here is the call graph for this function:

◆ setAllDirty()

static ilLPStatus::setAllDirty ( )
static

Sets all status to dirty.

For testing puproses.

Parameters

Definition at line 514 of file class.ilLPStatus.php.

References $ilDB.

515  {
516  global $ilDB;
517 
518  $ilDB->manipulate(
519  "UPDATE ut_lp_marks SET " .
520  " status_dirty = " . $ilDB->quote(1, "integer")
521  );
522  }
global $ilDB

◆ setDirty()

static ilLPStatus::setDirty (   $a_obj_id)
static

Sets status of an object to dirty.

Parameters
integerobject id
Returns

Definition at line 530 of file class.ilLPStatus.php.

References $ilDB.

531  {
532  global $ilDB;
533 
534  $ilDB->manipulate(
535  "UPDATE ut_lp_marks SET " .
536  " status_dirty = " . $ilDB->quote(1, "integer") .
537  " WHERE obj_id = " . $ilDB->quote($a_obj_id, "integer")
538  );
539  }
global $ilDB

◆ setInProgressIfNotAttempted()

static ilLPStatus::setInProgressIfNotAttempted (   $a_obj_id,
  $a_user_id 
)
static

This function shoudl be clalled for normal "read events".

The "in progress" status is only written, if current status is "NOT ATTEMPTED"

Definition at line 479 of file class.ilLPStatus.php.

References $ilDB, and ilLPStatusWrapper\_updateStatus().

Referenced by ilLearningProgress\_tracProgress().

480  {
481  global $ilDB;
482 
483  // #11513
484 
485  $needs_update = false;
486 
487  $set = $ilDB->query(
488  "SELECT usr_id, status FROM ut_lp_marks WHERE " .
489  " obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
490  " usr_id = " . $ilDB->quote($a_user_id, "integer")
491  );
492  if ($rec = $ilDB->fetchAssoc($set)) {
493  // current status is not attempted, so we need to update
494  if ($rec["status"] == self::LP_STATUS_NOT_ATTEMPTED_NUM) {
495  $needs_update = true;
496  }
497  } else {
498  // no ut_lp_marks yet, we should update
499  $needs_update = true;
500  }
501 
502  if ($needs_update) {
503  require_once "Services/Tracking/classes/class.ilLPStatusWrapper.php";
504  ilLPStatusWrapper::_updateStatus($a_obj_id, $a_user_id);
505  }
506  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ validateLPForObjects()

static ilLPStatus::validateLPForObjects (   $a_user_id,
  $a_obj_ids,
  $a_parent_ref_id 
)
staticprotected

Process given objects for lp-relevance.

Parameters
int$a_user_id
array$a_obj_ids
int$a_parent_ref_id
Returns
arraye

Definition at line 724 of file class.ilLPStatus.php.

References $obj_id, array, and ilObjectLP\getLPMemberships().

725  {
726  $lp_invalid = array();
727 
728  include_once "Services/Object/classes/class.ilObjectLP.php";
729  $memberships = ilObjectLP::getLPMemberships($a_user_id, $a_obj_ids, $a_parent_ref_id);
730  foreach ($memberships as $obj_id => $status) {
731  if (!$status) {
732  $lp_invalid[] = $obj_id;
733  }
734  }
735 
736  return array_diff($a_obj_ids, $lp_invalid);
737  }
Create styles array
The data for the language used.
static getLPMemberships($a_usr_id, array $a_obj_ids, $a_parent_ref_id=null, $a_mapped_ref_ids=false)
Get all objects where given user is member (from LP POV)
+ Here is the call graph for this function:

◆ writeStatus()

static ilLPStatus::writeStatus (   $a_obj_id,
  $a_user_id,
  $a_status,
  $a_percentage = false,
  $a_force_per = false 
)
static

Write status for user and object.

Parameters

Definition at line 363 of file class.ilLPStatus.php.

References $ilDB, $log, $ret, ilObject\_lookupType(), ilLPStatusWrapper\_removeStatusCache(), ilLPStatusWrapper\_updateStatus(), array, date, and ilLoggerFactory\getLogger().

Referenced by ilLPStatusSCORMPackage\refreshStatus(), ilLPStatusSCORM\refreshStatus(), ilObjSCORMTracking\syncGlobalStatus(), and ilSCORM2004StoreData\syncGlobalStatus().

364  {
365  global $ilDB;
366 
368  $log->debug("obj_id: " . $a_obj_id . ", user id: " . $a_user_id . ", status: " .
369  $a_status . ", percentage: " . $a_percentage . ", force: " . $a_force_per);
370 
371  $update_collections = false;
372 
373  // get status in DB
374  $set = $ilDB->query(
375  "SELECT usr_id,status,status_dirty FROM ut_lp_marks WHERE " .
376  " obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
377  " usr_id = " . $ilDB->quote($a_user_id, "integer")
378  );
379  $rec = $ilDB->fetchAssoc($set);
380 
381  // update
382  if ($rec) {
383  // status has changed: update
384  if ($rec["status"] != $a_status) {
385  $ret = $ilDB->manipulate(
386  "UPDATE ut_lp_marks SET " .
387  " status = " . $ilDB->quote($a_status, "integer") . "," .
388  " status_changed = " . $ilDB->now() . "," .
389  " status_dirty = " . $ilDB->quote(0, "integer") .
390  " WHERE usr_id = " . $ilDB->quote($a_user_id, "integer") .
391  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
392  );
393  if ($ret != 0) {
394  $update_collections = true;
395  }
396  }
397  // status has not changed: reset dirty flag
398  elseif ($rec["status_dirty"]) {
399  $ilDB->manipulate(
400  "UPDATE ut_lp_marks SET " .
401  " status_dirty = " . $ilDB->quote(0, "integer") .
402  " WHERE usr_id = " . $ilDB->quote($a_user_id, "integer") .
403  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
404  );
405  }
406  }
407  // insert
408  else {
409  /*
410  $ilDB->manipulate("INSERT INTO ut_lp_marks ".
411  "(status, status_changed, usr_id, obj_id, status_dirty) VALUES (".
412  $ilDB->quote($a_status, "integer").",".
413  $ilDB->now().",".
414  $ilDB->quote($a_user_id, "integer").",".
415  $ilDB->quote($a_obj_id, "integer").",".
416  $ilDB->quote(0, "integer").
417  ")");
418  */
419 
420  // #13783
421  $ilDB->replace(
422  "ut_lp_marks",
423  array(
424  "obj_id" => array("integer", $a_obj_id),
425  "usr_id" => array("integer", $a_user_id)
426  ),
427  array(
428  "status" => array("integer", $a_status),
429  "status_changed" => array("timestamp", date("Y-m-d H:i:s")), // was $ilDB->now()
430  "status_dirty" => array("integer", 0)
431  )
432  );
433 
434  $update_collections = true;
435  }
436 
437  // update percentage
438  if ($a_percentage !== false || $a_force_per) {
439  $a_percentage = max(0, (int) $a_percentage);
440  $a_percentage = min(100, $a_percentage);
441  $ret = $ilDB->manipulate(
442  "UPDATE ut_lp_marks SET " .
443  " percentage = " . $ilDB->quote($a_percentage, "integer") .
444  " WHERE usr_id = " . $ilDB->quote($a_user_id, "integer") .
445  " AND obj_id = " . $ilDB->quote($a_obj_id, "integer")
446  );
447  }
448 
449  // update collections
450  if ($update_collections) {
451  // a change occured - remove existing cache entry
452  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
453  ilLPStatusWrapper::_removeStatusCache($a_obj_id, $a_user_id);
454 
455  $set = $ilDB->query("SELECT ut_lp_collections.obj_id obj_id FROM " .
456  "object_reference JOIN ut_lp_collections ON " .
457  "(object_reference.obj_id = " . $ilDB->quote($a_obj_id, "integer") .
458  " AND object_reference.ref_id = ut_lp_collections.item_id)");
459  while ($rec = $ilDB->fetchAssoc($set)) {
460  if (in_array(ilObject::_lookupType($rec["obj_id"]), array("crs", "grp", "fold"))) {
461  // just to make sure - remove existing cache entry
462  ilLPStatusWrapper::_removeStatusCache($rec["obj_id"], $a_user_id);
463 
464  ilLPStatusWrapper::_updateStatus($rec["obj_id"], $a_user_id);
465  }
466  }
467 
468  self::raiseEvent($a_obj_id, $a_user_id, $a_status, $a_percentage);
469  }
470 
471  return $update_collections;
472  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
static _removeStatusCache($a_obj_id, $a_usr_id)
global $ilDB
$ret
Definition: parser.php:6
static getLogger($a_component_id)
Get component logger.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $db

ilLPStatus::$db = null

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

◆ $list_gui_cache

ilLPStatus::$list_gui_cache
static

Definition at line 21 of file class.ilLPStatus.php.

◆ $obj_id

ilLPStatus::$obj_id = null

◆ LP_STATUS_COMPLETED

◆ LP_STATUS_COMPLETED_NUM

const ilLPStatus::LP_STATUS_COMPLETED_NUM = 2

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

Referenced by ilLPObjectStatisticsLPTableGUI\__construct(), ilLearningProgressBaseGUI\__readStatus(), ilLearningProgressBaseGUI\_getImagePathForStatus(), ilLearningProgressBaseGUI\_getStatusText(), ilLMExplorerGUI\checkLPIcon(), ilObjCourse\checkLPStatusSync(), ilLPStatusSurveyFinished\determineStatus(), ilLPStatusStudyProgramme\determineStatus(), ilCourseLPBadge\evaluate(), ilTrSummaryTableGUI\fillHeaderCSV(), ilTrSummaryTableGUI\fillHeaderExcel(), ilLPProgressTableGUI\fillRow(), ilTrObjectUsersPropsTableGUI\fillRow(), ilTrMatrixTableGUI\fillRow(), ilLPObjectStatisticsLPTableGUI\getGraph(), ilIndividualAssessmentMembersTableGUI\getImagetPathForStatus(), ilTrMatrixTableGUI\getItems(), ilTrSummaryTableGUI\getItems(), ilLOUserResults\getObjectiveStatusForLP(), ilTrQuery\getObjectsDataForUser(), ilSoapSCORMAdministration\getSCORMCompletionStatus(), ilLOUserResults\getSummarizedObjectiveStatusForLP(), ilTrQuery\getUserObjectiveMatrix(), ilBadgeAppEventListener\handleEvent(), ilSkillAppEventListener\handleEvent(), ilCourseAppEventListener\handleEvent(), ilObjSCORM2004LearningModule\importSuccess(), ilObjSCORMLearningModule\importSuccess(), ilLearningProgressGUI\initCollectionManualForm(), ilLearningProgressBaseGUI\initEditUserForm(), ilMStListCoursesTableGUI\initFilter(), ilMStShowUserCoursesTableGUI\initFilter(), ilTrSummaryTableGUI\initFilter(), ilTrObjectUsersPropsTableGUI\initFilter(), ilStudyProgrammeLeafMock\markCompletedFor(), ilStudyProgrammeAppEventListener\onServiceTrackingUpdateStatus(), ilLearningProgressGUI\showtlt(), ilStudyProgrammeLPTest\testMarkAccredited(), ilStudyProgrammeLPTest\testUnmarkAccredited(), and ilLTIAppEventListener\tryOutcomeService().

◆ LP_STATUS_FAILED

◆ LP_STATUS_FAILED_NUM

◆ LP_STATUS_IN_PROGRESS

◆ LP_STATUS_IN_PROGRESS_NUM

const ilLPStatus::LP_STATUS_IN_PROGRESS_NUM = 1

Definition at line 29 of file class.ilLPStatus.php.

Referenced by ilLPObjectStatisticsLPTableGUI\__construct(), ilLearningProgressBaseGUI\__readStatus(), ilLearningProgressBaseGUI\_getImagePathForStatus(), ilLPStatusObjectives\_getStatusInfo(), ilLearningProgressBaseGUI\_getStatusText(), ilLMExplorerGUI\checkLPIcon(), ilLPStatusSurveyFinished\determineStatus(), ilLPStatusStudyProgramme\determineStatus(), ilIndividualAssessmentLPInterface\determineStatusOfMember(), ilTrSummaryTableGUI\fillHeaderCSV(), ilTrSummaryTableGUI\fillHeaderExcel(), ilLPObjectStatisticsLPTableGUI\getGraph(), ilIndividualAssessmentMembersTableGUI\getImagetPathForStatus(), ilTrMatrixTableGUI\getItems(), ilTrSummaryTableGUI\getItems(), ilLOUserResults\getObjectiveStatusForLP(), ilTrQuery\getObjectsDataForUser(), ilSoapSCORMAdministration\getSCORMCompletionStatus(), ilLOUserResults\getSummarizedObjectiveStatusForLP(), ilTrQuery\getUserObjectiveMatrix(), ilObjSCORM2004LearningModule\importSuccess(), ilObjSCORMLearningModule\importSuccess(), ilMStListCoursesTableGUI\initFilter(), ilMStShowUserCoursesTableGUI\initFilter(), ilLPObjectStatisticsLPTableGUI\initFilter(), ilTrSummaryTableGUI\initFilter(), ilTrObjectUsersPropsTableGUI\initFilter(), ilLearningProgressGUI\showtlt(), ilStudyProgrammeLPTest\testInitialLPActive(), ilStudyProgrammeLPTest\testInitialLPDraft(), ilStudyProgrammeLPTest\testInitialProgressOutdated(), ilStudyProgrammeLPTest\testMarkAccredited(), ilStudyProgrammeLPTest\testMarkFailed(), ilStudyProgrammeLPTest\testMarkNotFailed(), ilStudyProgrammeLPTest\testMarkNotRelevant(), and ilStudyProgrammeLPTest\testUnmarkAccredited().

◆ LP_STATUS_NOT_ATTEMPTED

◆ LP_STATUS_NOT_ATTEMPTED_NUM

const ilLPStatus::LP_STATUS_NOT_ATTEMPTED_NUM = 0

◆ LP_STATUS_NOT_PARTICIPATED

const ilLPStatus::LP_STATUS_NOT_PARTICIPATED = 'trac_not_participated'

◆ LP_STATUS_NOT_REGISTERED

const ilLPStatus::LP_STATUS_NOT_REGISTERED = 'trac_not_registered'

◆ LP_STATUS_PARTICIPATED

const ilLPStatus::LP_STATUS_PARTICIPATED = 'trac_participated'

◆ LP_STATUS_REGISTERED

const ilLPStatus::LP_STATUS_REGISTERED = 'trac_registered'

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