3 declare(strict_types=0);
    31     protected int $visits = self::LP_DEFAULT_VISITS;
    71     protected static array 
$map = array(
    73         self::LP_MODE_DEACTIVATED => array(
'ilLPStatus',
    74                                            'trac_mode_deactivated',
    75                                            'trac_mode_deactivated_info_new'    79         self::LP_MODE_TLT => array(
'ilLPStatusTypicalLearningTime',
    85         self::LP_MODE_VISITS => array(
'ilLPStatusVisits',
    87                                       'trac_mode_visits_info'    91         self::LP_MODE_MANUAL => array(
'ilLPStatusManual',
    93                                       'trac_mode_manual_info'    97         self::LP_MODE_OBJECTIVES => array(
'ilLPStatusObjectives',
    98                                           'trac_mode_objectives',
    99                                           'trac_mode_objectives_info'   103         self::LP_MODE_COLLECTION => array(
'ilLPStatusCollection',
   104                                           'trac_mode_collection',
   105                                           'trac_mode_collection_info'   109         self::LP_MODE_SCORM => array(
'ilLPStatusSCORM',
   111                                      'trac_mode_scorm_info'   115         self::LP_MODE_TEST_FINISHED => array(
'ilLPStatusTestFinished',
   116                                              'trac_mode_test_finished',
   117                                              'trac_mode_test_finished_info'   121         self::LP_MODE_TEST_PASSED => array(
'ilLPStatusTestPassed',
   122                                            'trac_mode_test_passed',
   123                                            'trac_mode_test_passed_info'   127         self::LP_MODE_EXERCISE_RETURNED => array(
'ilLPStatusExerciseReturned',
   128                                                  'trac_mode_exercise_returned',
   129                                                  'trac_mode_exercise_returned_info'   133         self::LP_MODE_EVENT => array(
'ilLPStatusEvent',
   135                                      'trac_mode_event_info'   139         self::LP_MODE_MANUAL_BY_TUTOR => array(
'ilLPStatusManualByTutor',
   140                                                'trac_mode_manual_by_tutor',
   141                                                'trac_mode_manual_by_tutor_info'   145         self::LP_MODE_SCORM_PACKAGE => array(
'ilLPStatusSCORMPackage',
   146                                              'trac_mode_scorm_package',
   147                                              'trac_mode_scorm_package_info'   151         self::LP_MODE_UNDEFINED => null
   154         self::LP_MODE_PLUGIN => array(
'ilLPStatusPlugin',
   160         self::LP_MODE_COLLECTION_TLT => array(
'ilLPStatusCollectionTLT',
   161                                               'trac_mode_collection_tlt',
   162                                               'trac_mode_collection_tlt_info'   166         self::LP_MODE_COLLECTION_MANUAL => array(
'ilLPStatusCollectionManual',
   167                                                  'trac_mode_collection_manual',
   168                                                  'trac_mode_collection_manual_info'   172         self::LP_MODE_QUESTIONS => array(
'ilLPStatusQuestions',
   173                                          'trac_mode_questions',
   174                                          'trac_mode_questions_info'   178         self::LP_MODE_SURVEY_FINISHED => array(
'ilLPStatusSurveyFinished',
   179                                                'trac_mode_survey_finished',
   180                                                'trac_mode_survey_finished_info'   184         self::LP_MODE_VISITED_PAGES => array(
'ilLPStatusVisitedPages',
   185                                              'trac_mode_visited_pages',
   186                                              'trac_mode_visited_pages_info'   190         self::LP_MODE_CONTENT_VISITED => array(
'ilLPStatusContentVisited',
   191                                                'trac_mode_content_visited',
   192                                                'trac_mode_content_visited_info'   196         self::LP_MODE_COLLECTION_MOBS => array(
'ilLPStatusCollectionMobs',
   197                                                'trac_mode_collection_mobs',
   198                                                'trac_mode_collection_mobs_info'   202         self::LP_MODE_STUDY_PROGRAMME => array(
'ilLPStatusStudyProgramme',
   203                                                'trac_mode_study_programme',
   208         self::LP_MODE_INDIVIDUAL_ASSESSMENT => array(
'ilLPStatusIndividualAssessment',
   209                                                      'trac_mode_individual_assessment',
   210                                                      'trac_mode_individual_assessment_info'   214         self::LP_MODE_CMIX_COMPLETED => array(ilLPStatusCmiXapiCompleted::class,
   215                                               'trac_mode_cmix_completed',
   216                                               'trac_mode_cmix_completed_info'   220         self::LP_MODE_CMIX_COMPL_WITH_FAILED => array(ilLPStatusCmiXapiCompletedWithFailed::class,
   221                                                       'trac_mode_cmix_compl_with_failed',
   222                                                       'trac_mode_cmix_compl_with_failed_info'   226         self::LP_MODE_CMIX_PASSED => array(ilLPStatusCmiXapiPassed::class,
   227                                            'trac_mode_cmix_passed',
   228                                            'trac_mode_cmix_passed_info'   232         self::LP_MODE_CMIX_PASSED_WITH_FAILED => array(ilLPStatusCmiXapiPassedWithFailed::class,
   233                                                        'trac_mode_cmix_passed_with_failed',
   234                                                        'trac_mode_cmix_passed_with_failed_info'   238         self::LP_MODE_CMIX_COMPLETED_OR_PASSED => array(ilLPStatusCmiXapiCompletedOrPassed::class,
   239                                                         'trac_mode_cmix_completed_or_passed',
   240                                                         'trac_mode_cmix_completed_or_passed_info'   244         self::LP_MODE_CMIX_COMPL_OR_PASSED_WITH_FAILED => array(ilLPStatusCmiXapiCompletedOrPassedWithFailed::class,
   245                                                                 'trac_mode_cmix_compl_or_passed_with_failed',
   246                                                                 'trac_mode_cmix_compl_or_passed_with_failed_info'   250         self::LP_MODE_LTI_OUTCOME => array(ilLPStatusLtiOutcome::class,
   251                                            'trac_mode_lti_outcome',
   252                                            'trac_mode_lti_outcome_info'   256         self::LP_MODE_COURSE_REFERENCE => [
   257             'ilLPStatusCourseReference',
   258             'trac_mode_course_reference',
   259             'trac_mode_course_reference_info'   262         self::LP_MODE_CONTRIBUTION_TO_DISCUSSION => [
   263             ilLPStatusContributionToDiscussion::class,
   264             'trac_mode_contribution_to_discussion',
   265             'trac_mode_contribution_to_discussion_info'   276         $this->db = $DIC->database();
   279         $this->obj_id = $a_obj_id;
   281         if (!$this->
read()) {
   285             $this->obj_mode = $olp->getDefaultMode();
   298         $ilDB = $DIC[
'ilDB'];
   300         $query = 
"INSERT INTO ut_lp_settings (obj_id,obj_type,u_mode,visits) " .
   302             $this->db->quote($a_new_obj_id, 
'integer') . 
", " .
   303             $this->db->quote($this->
getObjType(), 
'text') . 
", " .
   304             $this->db->quote($this->
getMode(), 
'integer') . 
", " .
   305             $this->db->quote($this->
getVisits(), 
'integer') .
   307         $res = $this->db->manipulate($query);
   318         $this->visits = $a_visits;
   323         $this->obj_mode = $a_mode;
   343         $res = $this->db->query(
   344             "SELECT * FROM ut_lp_settings WHERE obj_id = " .
   345             $this->db->quote($this->obj_id, 
'integer')
   348             $this->is_stored = 
true;
   349             $this->obj_type = (string) $row->obj_type;
   350             $this->obj_mode = (
int) $row->u_mode;
   351             $this->visits = (
int) $row->visits;
   357     public function update(
bool $a_refresh_lp = 
true): bool
   359         if (!$this->is_stored) {
   362         $query = 
"UPDATE ut_lp_settings SET u_mode = " . $this->db->quote(
   366             "visits = " . $this->db->quote(
   370             "WHERE obj_id = " . $this->db->quote($this->
getObjId(), 
'integer');
   371         $res = $this->db->manipulate($query);
   382         $query = 
"INSERT INTO ut_lp_settings (obj_id,obj_type,u_mode,visits) " .
   384             $this->db->quote($this->
getObjId(), 
'integer') . 
", " .
   385             $this->db->quote($this->
getObjType(), 
'text') . 
", " .
   386             $this->db->quote($this->
getMode(), 
'integer') . 
", " .
   387             $this->db->quote($this->
getVisits(), 
'integer') .  
   389         $res = $this->db->manipulate($query);
   401     public static function _delete(
int $a_obj_id): bool
   405         $ilDB = $DIC[
'ilDB'];
   406         $query = 
"DELETE FROM ut_lp_settings WHERE obj_id = " . 
$ilDB->quote(
   418         $ilDB = $DIC[
'ilDB'];
   419         $query = 
"SELECT visits FROM ut_lp_settings " .
   420             "WHERE obj_id = " . 
$ilDB->quote($a_obj_id, 
'integer');
   426         return self::LP_DEFAULT_VISITS;
   433         $ilDB = $DIC[
'ilDB'];
   436         $query = 
"SELECT obj_id, u_mode FROM ut_lp_settings" .
   437             " WHERE " . 
$ilDB->in(
"obj_id", $a_obj_ids, 
"", 
"integer");
   438         $set = 
$ilDB->query($query);
   440             $res[(
int) $row->obj_id] = (
int) $row->u_mode;
   449         $ilDB = $DIC[
'ilDB'];
   451         $query = 
"SELECT u_mode FROM ut_lp_settings" .
   452             " WHERE obj_id = " . 
$ilDB->quote($a_obj_id, 
"integer");
   455             return (
int) $row->u_mode;
   464         $lng = $DIC->language();
   465         if (array_key_exists($a_mode, self::$map) &&
   466             is_array(self::$map[$a_mode])) {
   467             return $lng->txt(self::$map[$a_mode][1]);
   476         $lng = $DIC->language();
   477         if (array_key_exists($a_mode, self::$map) &&
   478             is_array(self::$map[$a_mode])) {
   479             $info = 
$lng->txt(self::$map[$a_mode][2]);
   480             if ($a_mode == self::LP_MODE_TLT) {
   492         foreach (self::$map as $mode => $item) {
   494                 $res[$mode] = $item[0];
   504         $ilDB = $DIC[
'ilDB'];
   510             "DELETE FROM ut_lp_settings" .
   511             " WHERE obj_id = " . 
$ilDB->quote($a_obj_id, 
"integer")
 static _lookupVisits(int $a_obj_id)
 
const LP_MODE_CMIX_COMPLETED
 
const LP_MODE_CMIX_COMPLETED_OR_PASSED
 
update(bool $a_refresh_lp=true)
 
const LP_MODE_MANUAL_BY_TUTOR
 
const LP_MODE_CMIX_PASSED_WITH_FAILED
 
const LP_MODE_CMIX_PASSED
 
const LP_MODE_COLLECTION_MANUAL
 
static _mode2InfoText(int $a_mode)
 
const LP_MODE_INDIVIDUAL_ASSESSMENT
 
const LP_MODE_COURSE_REFERENCE
 
const LP_MODE_COLLECTION_TLT
 
const LP_MODE_TEST_FINISHED
 
ilObjectDataCache $objectDataCache
 
const LP_MODE_SCORM_PACKAGE
 
const LP_MODE_CMIX_COMPL_WITH_FAILED
 
const LP_MODE_EXERCISE_RETURNED
 
const LP_MODE_CONTRIBUTION_TO_DISCUSSION
 
const LP_MODE_VISITED_PAGES
 
const LP_MODE_STUDY_PROGRAMME
 
const LP_MODE_TEST_PASSED
 
static _delete(int $a_obj_id)
 
static _refreshStatus(int $a_obj_id, ?array $a_users=null)
 
const LP_MODE_SURVEY_FINISHED
 
__construct(int $a_obj_id)
 
static _lookupDBMode(int $a_obj_id)
 
static _lookupDBModeForObjects(array $a_obj_ids)
 
const LP_MODE_DEACTIVATED
 
const LP_MODE_COLLECTION_MOBS
 
const LP_MODE_CONTENT_VISITED
 
const LP_MODE_CMIX_COMPL_OR_PASSED_WITH_FAILED
 
const LP_MODE_LTI_OUTCOME
 
cloneSettings(int $a_new_obj_id)
Clone settings  public. 
 
static getInstance(int $obj_id)
 
static _deleteByObjId(int $a_obj_id)
 
static _getValidTimeSpan()
 
static _mode2Text(int $a_mode)