public function updateUserSubscription($params) { require_once _lms_ . '/lib/lib.subscribe.php'; require_once _lms_ . '/lib/lib.course.php'; $output = array(); $output['success'] = true; if (empty($params['idst']) || (int) $params['idst'] <= 0) { return false; // return array('success'=>true, 'debug'=>print_r($params, true)); } else { $user_id = $params['idst']; } $course_id = isset($params['course_id']) ? (int) $params['course_id'] : false; $course_code = isset($params['course_code']) ? $params['course_code'] : false; $edition_id = isset($params['edition_id']) ? (int) $params['edition_id'] : false; $edition_code = isset($params['edition_code']) ? $params['edition_code'] : false; $classroom_id = isset($params['classroom_id']) ? (int) $params['classroom_id'] : false; $classroom_code = isset($params['classroom_code']) ? $params['classroom_code'] : false; $user_level = $this->getUserLevelId(isset($params['user_level']) ? $params['user_level'] : false); $user_status = $this->getUserStatusId(isset($params['user_status']) ? $params['user_status'] : false); $acl_man = Docebo::user()->getAclManager(); $course_man = new Man_Course(); $db = DbConn::getInstance(); $course_info = false; $edition_info = false; $classroom_info = false; $this->fillCourseDataFromParams($params, $db, $course_id, $edition_id, $classroom_id, $course_code, $edition_code, $classroom_code, $course_info, $edition_info, $classroom_info, $output); // --------------- update user subscription: ------------------------ $model = new SubscriptionAlms($course_id, $edition_id, $classroom_id); $docebo_course = new DoceboCourse($course_id); $level_idst = $docebo_course->getCourseLevel($course_id); if (count($level_idst) == 0 || $level_idst[1] == '') { $level_idst = $docebo_course->createCourseLevel($course_id); } $update_ok = true; // -- update level ----- if (!empty($user_level)) { $old_level = $model->getUserLevel($user_id); if (isset($level_idst[$user_level]) && isset($level_idst[$old_level])) { $acl_man->removeFromGroup($level_idst[$old_level], $user_id); $acl_man->addToGroup($level_idst[$user_level], $user_id); $ok = $model->updateUserLevel($user_id, $user_level); if (!$ok) { $update_ok = false; } } } // -- update status ----- if (!empty($user_status)) { $status_arr = $model->getUserStatusList(); if (isset($status_arr[$user_status])) { $ok = $model->updateUserStatus($user_id, $user_status); if (!$ok) { $update_ok = false; } } } if (!$update_ok) { $output['success'] = false; } else { $output['message'] = 'User subscription has been updated'; } return $output; }