function getValidModes()
 {
     global $lng;
     switch ($this->obj_type) {
         case 'crs':
             if (ilLPObjSettings::_checkObjectives($this->getObjId())) {
                 return array(LP_MODE_OBJECTIVES => $lng->txt('trac_mode_objectives'));
             }
             return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_MANUAL_BY_TUTOR => $lng->txt('trac_mode_manual_by_tutor'), LP_MODE_COLLECTION => $lng->txt('trac_mode_collection'));
             break;
         case 'dbk':
             return array(LP_MODE_MANUAL => $lng->txt('trac_mode_manual'), LP_MODE_DEACTIVATE => $lng->txt('trac_mode_deactivated'));
         case 'lm':
             return array(LP_MODE_MANUAL => $lng->txt('trac_mode_manual'), LP_MODE_VISITS => $lng->txt('trac_mode_visits'), LP_MODE_TLT => $lng->txt('trac_mode_tlt'), LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'));
         case 'htlm':
             return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_MANUAL => $lng->txt('trac_mode_manual'));
         case 'sahs':
             include_once './Services/Tracking/classes/class.ilLPCollections.php';
             include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php";
             $subtype = ilObjSAHSLearningModule::_lookupSubType($this->getObjId());
             if ($subtype != "scorm2004") {
                 if (ilLPObjSettings::_checkSCORMPreconditions($this->getObjId())) {
                     return array(LP_MODE_SCORM => $lng->txt('trac_mode_scorm_aicc'));
                 }
                 if (ilLPCollections::_getCountPossibleSAHSItems($this->getObjId())) {
                     return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_SCORM => $lng->txt('trac_mode_scorm_aicc'));
                 }
                 return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'));
             } else {
                 if (ilLPObjSettings::_checkSCORMPreconditions($this->getObjId())) {
                     return array(LP_MODE_SCORM => $lng->txt('trac_mode_scorm_aicc'), LP_MODE_SCORM_PACKAGE => $lng->txt('trac_mode_scorm_package'));
                 }
                 if (ilLPCollections::_getCountPossibleSAHSItems($this->getObjId())) {
                     return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_SCORM_PACKAGE => $lng->txt('trac_mode_scorm_package'), LP_MODE_SCORM => $lng->txt('trac_mode_scorm_aicc'));
                 }
                 return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_SCORM_PACKAGE => $lng->txt('trac_mode_scorm_package'));
             }
             break;
         case 'tst':
             return array(LP_MODE_TEST_FINISHED => $lng->txt('trac_mode_test_finished'), LP_MODE_TEST_PASSED => $lng->txt('trac_mode_test_passed'), LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'));
         case 'exc':
             return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_EXERCISE_RETURNED => $lng->txt('trac_mode_exercise_returned'));
         case 'grp':
             return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_MANUAL_BY_TUTOR => $lng->txt('trac_mode_manual_by_tutor'), LP_MODE_COLLECTION => $lng->txt('trac_mode_collection'));
         case 'fold':
             return array(LP_MODE_DEACTIVATED => $lng->txt('trac_mode_deactivated'), LP_MODE_COLLECTION => $lng->txt('trac_mode_collection'));
         case 'sess':
             return array(LP_MODE_EVENT => $this->lng->txt('trac_mode_event'));
         default:
             return array();
     }
 }