/** * Translate operator * @param type $a_operator */ public static function translateOperator($a_obj_id, $a_operator) { switch ($a_operator) { case ilConditionHandler::OPERATOR_LP: $GLOBALS['lng']->loadLanguageModule('trac'); include_once './Services/Tracking/classes/class.ilLPObjSettings.php'; $obj_settings = new ilLPObjSettings($a_obj_id); return ilLPObjSettings::_mode2Text($obj_settings->getMode()); default: $GLOBALS['lng']->loadLanguageModule('rbac'); return $GLOBALS['lng']->txt('condition_' . $a_operator); } }
/** * Handle an event in a listener. * * @param string $a_component component, e.g. "Modules/Forum" or "Services/User" * @param string $a_event event e.g. "createUser", "updateUser", "deleteUser", ... * @param array $a_parameter parameter array (assoc), array("name" => ..., "phone_office" => ...) */ static function handleEvent($a_component, $a_event, $a_parameter) { global $ilUser; if ($a_component == "Services/Tracking" && $a_event == "updateStatus") { $obj_id = $a_parameter["obj_id"]; $user_id = $a_parameter["usr_id"]; $status = $a_parameter["status"]; if ($obj_id && $user_id) { if (ilObject::_lookupType($obj_id) != "crs") { return; } // determine couse setting only once if (!isset(self::$course_mode[$obj_id])) { include_once "./Modules/Course/classes/class.ilObjCourse.php"; $crs = new ilObjCourse($obj_id, false); if ($crs->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) { include_once './Services/Tracking/classes/class.ilLPObjSettings.php'; $lp_settings = new ilLPObjSettings($obj_id); $mode = $lp_settings->getMode(); } else { $mode = false; } self::$course_mode[$obj_id] = $mode; } $is_completed = $status == LP_STATUS_COMPLETED_NUM; // we are NOT using the members object because of performance issues switch (self::$course_mode[$obj_id]) { case LP_MODE_MANUAL_BY_TUTOR: include_once "Modules/Course/classes/class.ilCourseParticipants.php"; ilCourseParticipants::_updatePassed($obj_id, $user_id, $is_completed, $ilUser->getId()); break; case LP_MODE_COLLECTION: case LP_MODE_OBJECTIVES: if ($is_completed) { include_once "Modules/Course/classes/class.ilCourseParticipants.php"; ilCourseParticipants::_updatePassed($obj_id, $user_id, $is_completed, -1); } break; } } } }
/** * sync course status and lp status * * @param int $a_member_id * @param bool $a_has_passed */ protected function updateLPFromStatus($a_member_id, $a_has_passed) { include_once "Services/Tracking/classes/class.ilObjUserTracking.php"; if (ilObjUserTracking::_enabledLearningProgress() && $this->object->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) { include_once './Services/Tracking/classes/class.ilLPObjSettings.php'; $lp_settings = new ilLPObjSettings($this->object->getId()); if ($lp_settings->getMode() == LP_MODE_MANUAL_BY_TUTOR) { include_once 'Services/Tracking/classes/class.ilLPMarks.php'; $marks = new ilLPMarks($this->object->getId(), $a_member_id); $marks->setCompleted($a_has_passed); $marks->update(); include_once "./Services/Tracking/classes/class.ilLPStatusWrapper.php"; ilLPStatusWrapper::_updateStatus($this->object->getId(), $a_member_id, null, false, true); } } }