From 9763d82a5d39ed1c6d783894a01d96593ff73de0 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Sat, 22 May 2021 16:08:44 +0200 Subject: [PATCH] Use entities in CourseManager::subscribeUser Use course id instead course code --- public/main/admin/course_import.php | 4 +- public/main/admin/course_user_import.php | 3 +- .../admin/course_user_import_by_email.php | 2 +- public/main/admin/ldap_import_students.php | 3 +- public/main/admin/subscribe_user2course.php | 3 +- public/main/admin/user_import.php | 5 +- public/main/admin/user_update_import.php | 3 +- public/main/auth/inscription.php | 4 +- public/main/course_info/legal.php | 2 +- public/main/cron/import_csv.php | 2 +- public/main/inc/lib/api.lib.php | 10 +- public/main/inc/lib/course.lib.php | 109 ++++++++++-------- public/main/inc/lib/events.lib.php | 14 ++- public/main/inc/lib/exercise.lib.php | 6 +- public/main/inc/lib/sessionmanager.lib.php | 4 +- public/main/inc/lib/usergroup.lib.php | 7 +- public/main/inc/lib/webservices/Rest.php | 5 +- public/main/user/subscribe_user.php | 8 +- public/main/user/user_import.php | 2 +- .../main/webservices/cm_webservice_course.php | 6 +- public/main/webservices/registration.soap.php | 10 +- .../webservices/user_import/import.lib.php | 5 +- public/main/webservices/webservice_course.php | 2 +- .../src/buy_course_plugin.class.php | 3 +- public/plugin/justification/cron.php | 2 +- src/CoreBundle/Entity/CourseRelUser.php | 1 + tests/scripts/users_no_course.php | 4 +- 27 files changed, 131 insertions(+), 98 deletions(-) diff --git a/public/main/admin/course_import.php b/public/main/admin/course_import.php index 7537ae5c5b..156d8799aa 100644 --- a/public/main/admin/course_import.php +++ b/public/main/admin/course_import.php @@ -125,7 +125,7 @@ function save_courses_data($courses) $params['course_category'] = $course['CourseCategory']; $params['course_language'] = $course_language; $params['user_id'] = $creatorId; - $addMeAsTeacher = isset($_POST['add_me_as_teacher']) ? $_POST['add_me_as_teacher'] : false; + $addMeAsTeacher = $_POST['add_me_as_teacher'] ?? false; $params['add_user_as_teacher'] = $addMeAsTeacher; $courseInfo = CourseManager::create_course($params); @@ -134,7 +134,7 @@ function save_courses_data($courses) foreach ($teacherList as $teacher) { CourseManager::subscribeUser( $teacher['user_id'], - $courseInfo['code'], + $courseInfo['real_id'], COURSEMANAGER ); } diff --git a/public/main/admin/course_user_import.php b/public/main/admin/course_user_import.php index 24bb918fcb..b3bf58f1ae 100644 --- a/public/main/admin/course_user_import.php +++ b/public/main/admin/course_user_import.php @@ -103,10 +103,9 @@ function save_data($users_courses) if (isset($_POST['subscribe']) && $_POST['subscribe']) { foreach ($to_subscribe as $courseId) { $courseInfo = $courseListById[$courseId]; - $courseCode = $courseInfo['code']; $result = CourseManager::subscribeUser( $user_id, - $courseCode, + $courseId, $csv_subscriptions[$courseId] ); if ($result) { diff --git a/public/main/admin/course_user_import_by_email.php b/public/main/admin/course_user_import_by_email.php index 94d7197455..3701ab80e5 100644 --- a/public/main/admin/course_user_import_by_email.php +++ b/public/main/admin/course_user_import_by_email.php @@ -104,7 +104,7 @@ function save_data($users_courses) CourseManager::subscribeUser( $user_id, - $course_code, + $courseId, $csv_subscriptions[$course_code] ); $inserted_in_course[$course_info['code']] = $course_info['title']; diff --git a/public/main/admin/ldap_import_students.php b/public/main/admin/ldap_import_students.php index 9589e02f32..88a27db1f3 100644 --- a/public/main/admin/ldap_import_students.php +++ b/public/main/admin/ldap_import_students.php @@ -137,7 +137,8 @@ if (empty($annee) && empty($course)) { } if (!empty($_POST['course'])) { foreach ($UserList as $user_id) { - CourseManager::subscribeUser($user_id, $_POST['course']); + $courseInfo = api_get_course_info($_POST['course']); + CourseManager::subscribeUser($user_id, $courseInfo['real_id']); } header('Location: course_information.php?code='.Security::remove_XSS($_POST['course'])); exit; diff --git a/public/main/admin/subscribe_user2course.php b/public/main/admin/subscribe_user2course.php index b415021541..dbbd6b02f1 100644 --- a/public/main/admin/subscribe_user2course.php +++ b/public/main/admin/subscribe_user2course.php @@ -96,7 +96,8 @@ if (isset($_POST['form_sent']) && $_POST['form_sent']) { foreach ($users as $user_id) { $user = api_get_user_info($user_id); if (DRH != $user['status']) { - CourseManager::subscribeUser($user_id, $course_code); + $courseInfo = api_get_course_info($course_code); + CourseManager::subscribeUser($user_id, $courseInfo['real_id']); } else { $errorDrh = 1; } diff --git a/public/main/admin/user_import.php b/public/main/admin/user_import.php index 0650d304e4..8fe69851d0 100644 --- a/public/main/admin/user_import.php +++ b/public/main/admin/user_import.php @@ -260,9 +260,10 @@ function save_data($users, $sendMail = false) if (isset($user['Courses']) && is_array($user['Courses'])) { foreach ($user['Courses'] as $course) { if (CourseManager::course_exists($course)) { - $result = CourseManager::subscribeUser($user_id, $course, $user['Status']); + $course_info = api_get_course_info($course); + + $result = CourseManager::subscribeUser($user_id, $course_info['real_id'], $user['Status']); if ($result) { - $course_info = api_get_course_info($course); $inserted_in_course[$course] = $course_info['title']; } } diff --git a/public/main/admin/user_update_import.php b/public/main/admin/user_update_import.php index 2c1ae032b3..656731f744 100644 --- a/public/main/admin/user_update_import.php +++ b/public/main/admin/user_update_import.php @@ -174,7 +174,8 @@ function updateUsers( if (!empty($user['Courses']) && is_array($user['Courses'])) { foreach ($user['Courses'] as $course) { if (CourseManager::course_exists($course)) { - CourseManager::subscribeUser($user_id, $course, $user['Status']); + $courseInfo = api_get_course_info($course); + CourseManager::subscribeUser($user_id, $courseInfo['real_id'], $user['Status']); } } } diff --git a/public/main/auth/inscription.php b/public/main/auth/inscription.php index 2ea697f12c..135ad60364 100644 --- a/public/main/auth/inscription.php +++ b/public/main/auth/inscription.php @@ -792,7 +792,7 @@ if ($form->validate()) { ) { CourseManager::subscribeUser( $user_id, - $course_info['code'] + $course_info['real_id'] ); } } @@ -1048,7 +1048,7 @@ if ($form->validate()) { ) { CourseManager::subscribeUser( api_get_user_id(), - $course_info['code'] + $course_info['real_id'] ); } } diff --git a/public/main/course_info/legal.php b/public/main/course_info/legal.php index 0d05289b6c..51abe37f37 100644 --- a/public/main/course_info/legal.php +++ b/public/main/course_info/legal.php @@ -84,7 +84,7 @@ if ($form->validate()) { COURSE_VISIBILITY_REGISTERED == $course_info['visibility'] && 1 == $course_info['subscribe'] ) { - CourseManager::subscribeUser($user_id, $course_info['code'], STUDENT, 0); + CourseManager::subscribeUser($user_id, $course_info['real_id'], STUDENT, 0); } CourseManager::save_user_legal($user_id, $course_info, $session_id); diff --git a/public/main/cron/import_csv.php b/public/main/cron/import_csv.php index cda482ceb5..79546f9bfe 100644 --- a/public/main/cron/import_csv.php +++ b/public/main/cron/import_csv.php @@ -2508,7 +2508,7 @@ class ImportCsv $result = CourseManager::subscribeUser( $userId, - $courseInfo['code'], + $courseInfo['real_id'], $status, 0, $userCourseCategory diff --git a/public/main/inc/lib/api.lib.php b/public/main/inc/lib/api.lib.php index f6ddd98ff7..d2bfdea031 100644 --- a/public/main/inc/lib/api.lib.php +++ b/public/main/inc/lib/api.lib.php @@ -2053,12 +2053,12 @@ function api_get_course_int_id($code = null) * Gets a course setting from the current course_setting table. Try always using integer values. * * @param string $settingName The name of the setting we want from the table - * @param array $courseInfo + * @param Course|array $courseInfo * @param bool $force force checking the value in the database * * @return mixed The value of that setting in that table. Return -1 if not found. */ -function api_get_course_setting($settingName, $courseInfo = [], $force = false) +function api_get_course_setting($settingName, $courseInfo = null, $force = false) { if (empty($courseInfo)) { $courseInfo = api_get_course_info(); @@ -2068,7 +2068,11 @@ function api_get_course_setting($settingName, $courseInfo = [], $force = false) return -1; } - $courseId = isset($courseInfo['real_id']) && !empty($courseInfo['real_id']) ? $courseInfo['real_id'] : 0; + if ($courseInfo instanceof Course) { + $courseId = $courseInfo->getId(); + } else { + $courseId = isset($courseInfo['real_id']) && !empty($courseInfo['real_id']) ? $courseInfo['real_id'] : 0; + } if (empty($courseId)) { return -1; diff --git a/public/main/inc/lib/course.lib.php b/public/main/inc/lib/course.lib.php index 288b5641ab..f5bd53f05c 100644 --- a/public/main/inc/lib/course.lib.php +++ b/public/main/inc/lib/course.lib.php @@ -4,6 +4,7 @@ use Chamilo\CoreBundle\Entity\AccessUrlRelSession; use Chamilo\CoreBundle\Entity\Course; +use Chamilo\CoreBundle\Entity\CourseRelUser; use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField; use Chamilo\CoreBundle\Entity\SequenceResource; use Chamilo\CoreBundle\Framework\Container; @@ -701,7 +702,7 @@ class CourseManager return true; } - return self::subscribeUser($userId, $course->getCode(), $status, 0); + return self::subscribeUser($userId, $course->getId(), $status, 0); } /** @@ -709,7 +710,7 @@ class CourseManager * course subscription is allowed. * * @param int $userId - * @param string $courseCode + * @param int $courseId * @param int $status (STUDENT, COURSEMANAGER, COURSE_ADMIN, NORMAL_COURSE_MEMBER) * @param int $sessionId * @param int $userCourseCategoryId @@ -721,7 +722,7 @@ class CourseManager */ public static function subscribeUser( $userId, - $courseCode, + $courseId, $status = STUDENT, $sessionId = 0, $userCourseCategoryId = 0, @@ -730,28 +731,27 @@ class CourseManager $userId = (int) $userId; $status = (int) $status; - if (empty($userId) || empty($courseCode)) { + if (empty($userId) || empty($courseId)) { return false; } - $courseInfo = api_get_course_info($courseCode); + $course = api_get_course_entity($courseId); - if (empty($courseInfo)) { + if (null === $course) { Display::addFlash(Display::return_message(get_lang('This course doesn\'t exist'), 'warning')); return false; } - $userInfo = api_get_user_info($userId); + $user = api_get_user_entity($userId); - if (empty($userInfo)) { + if (null === $user) { Display::addFlash(Display::return_message(get_lang('This user doesn\'t exist'), 'warning')); return false; } - $courseId = $courseInfo['real_id']; - $courseCode = $courseInfo['code']; + $courseCode = $course->getCode(); $userCourseCategoryId = (int) $userCourseCategoryId; $sessionId = empty($sessionId) ? api_get_session_id() : (int) $sessionId; $status = STUDENT === $status || COURSEMANAGER === $status ? $status : STUDENT; @@ -777,7 +777,7 @@ class CourseManager Event::addEvent( LOG_SUBSCRIBE_USER_TO_COURSE, LOG_USER_OBJECT, - $userInfo, + $user, api_get_utc_datetime(), api_get_user_id(), $courseId, @@ -801,7 +801,7 @@ class CourseManager if ($checkTeacherPermission && !api_is_course_admin()) { // Check in advance whether subscription is allowed or not for this course. - if (SUBSCRIBE_NOT_ALLOWED === (int) $courseInfo['subscribe']) { + if (SUBSCRIBE_NOT_ALLOWED === (int) $course->getSubscribe()) { Display::addFlash(Display::return_message(get_lang('SubscriptionNotAllowed'), 'warning')); return false; @@ -811,74 +811,87 @@ class CourseManager if (STUDENT === $status) { // Check if max students per course extra field is set $extraFieldValue = new ExtraFieldValue('course'); - $value = $extraFieldValue->get_values_by_handler_and_field_variable($courseId, 'max_subscribed_students'); - if (!empty($value) && isset($value['value'])) { - $maxStudents = $value['value']; - if ('' !== $maxStudents) { - $maxStudents = (int) $maxStudents; - $count = self::get_user_list_from_course_code( - $courseCode, - 0, - null, - null, - STUDENT, - true, - false - ); + $value = $extraFieldValue->get_values_by_handler_and_field_variable( + $courseId, + 'max_subscribed_students' + ); + if (!empty($value) && isset($value['value']) && '' !== $value['value']) { + $maxStudents = (int) $value['value']; + $count = self::get_user_list_from_course_code( + $courseCode, + 0, + null, + null, + STUDENT, + true, + false + ); - if ($count >= $maxStudents) { - Display::addFlash(Display::return_message(get_lang('The maximum number of student has already been reached, it is not possible to subscribe more student.'), 'warning')); + if ($count >= $maxStudents) { + Display::addFlash( + Display::return_message( + get_lang( + 'The maximum number of student has already been reached, it is not possible to subscribe more student.' + ), + 'warning' + ) + ); - return false; - } + return false; } } } $maxSort = api_max_sort_value('0', $userId); - $params = [ - 'c_id' => $courseId, - 'user_id' => $userId, - 'status' => $status, - 'sort' => $maxSort + 1, - 'relation_type' => 0, - 'user_course_cat' => $userCourseCategoryId, - ]; - $insertId = Database::insert($courseUserTable, $params); + + $courseRelUser = new CourseRelUser(); + $courseRelUser + ->setCourse($course) + ->setUser($user) + ->setStatus($status) + ->setSort($maxSort + 1) + ->setUserCourseCat($userCourseCategoryId) + ; + + $em = Database::getManager(); + $em->persist($courseRelUser); + $em->flush(); + + $insertId = $courseRelUser->getId(); if ($insertId) { Display::addFlash( Display::return_message( sprintf( get_lang('User %s has been registered to course %s'), - $userInfo['complete_name_with_username'], - $courseInfo['title'] + UserManager::formatUserFullName($user), + $course->getTitle() ) ) ); - $send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $courseInfo); + $send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $course); if (1 == $send) { self::email_to_tutor( $userId, - $courseInfo['real_id'], + $courseId, false ); } elseif (2 == $send) { self::email_to_tutor( $userId, - $courseInfo['real_id'], + $courseId, true ); } - $subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $courseInfo); + $subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $course); if (1 === $subscribe) { - $forums = get_forums(0, $courseCode, true, $sessionId); + /*$forums = get_forums(0, true, $sessionId); foreach ($forums as $forum) { set_notification('forum', $forum->getIid(), false, $userInfo, $courseInfo); - } + }*/ } // Add event to the system log @@ -894,7 +907,7 @@ class CourseManager Event::addEvent( LOG_SUBSCRIBE_USER_TO_COURSE, LOG_USER_OBJECT, - $userInfo, + $user, api_get_utc_datetime(), api_get_user_id(), $courseId diff --git a/public/main/inc/lib/events.lib.php b/public/main/inc/lib/events.lib.php index 3e2a9f87ca..bc67230bb2 100644 --- a/public/main/inc/lib/events.lib.php +++ b/public/main/inc/lib/events.lib.php @@ -60,7 +60,8 @@ class Event $autoSubscribe = explode('|', $autoSubscribe); foreach ($autoSubscribe as $code) { if (CourseManager::course_exists($code)) { - CourseManager::subscribeUser($userId, $code); + $courseInfo = api_get_course_info($code); + CourseManager::subscribeUser($userId, $courseInfo['real_id']); } } } @@ -817,6 +818,17 @@ class Event unset($event_value['picture_uri']); $event_value = serialize($event_value); } + + if ($event_value instanceof \Chamilo\CoreBundle\Entity\User) { + $event_value = serialize( + [ + 'id' => $event_value->getId(), + 'username' => $event_value->getUsername(), + 'firstname' => $event_value->getFirstName(), + 'lastname' => $event_value->getLastname(), + ] + ); + } } // If event is an array then the $event_value_type should finish with // the suffix _array for example LOG_WORK_DATA = work_data_array diff --git a/public/main/inc/lib/exercise.lib.php b/public/main/inc/lib/exercise.lib.php index c745fe9e18..4e36483cf7 100644 --- a/public/main/inc/lib/exercise.lib.php +++ b/public/main/inc/lib/exercise.lib.php @@ -5997,7 +5997,11 @@ EOT; switch ($action) { case 'subscribe_student_to_courses': foreach ($params as $code) { - CourseManager::subscribeUser($currentUserId, $code); + $courseInfo = api_get_course_info($code); + CourseManager::subscribeUser( + $currentUserId, + $courseInfo['real_id'] + ); break; } break; diff --git a/public/main/inc/lib/sessionmanager.lib.php b/public/main/inc/lib/sessionmanager.lib.php index ebf76dd849..72555b67cf 100644 --- a/public/main/inc/lib/sessionmanager.lib.php +++ b/public/main/inc/lib/sessionmanager.lib.php @@ -5656,7 +5656,7 @@ class SessionManager CourseManager::subscribeUser( $teacherToAdd, - $course_code, + $courseId, COURSEMANAGER, 0, $userCourseCategory @@ -5777,7 +5777,7 @@ class SessionManager CourseManager::subscribeUser( $teacherId, - $course_code, + $courseInfo['real_id'], COURSEMANAGER, 0, $userCourseCategory diff --git a/public/main/inc/lib/usergroup.lib.php b/public/main/inc/lib/usergroup.lib.php index ead6f1cbea..d72135181a 100644 --- a/public/main/inc/lib/usergroup.lib.php +++ b/public/main/inc/lib/usergroup.lib.php @@ -1116,7 +1116,7 @@ class UserGroup extends Model foreach ($user_list as $user_id) { CourseManager::subscribeUser( $user_id, - $course_info['code'] + $course_id ); } } @@ -1268,11 +1268,10 @@ class UserGroup extends Model } foreach ($new_items as $user_id) { - // Adding courses + // Adding courses. if (!empty($course_list)) { foreach ($course_list as $course_id) { - $course_info = api_get_course_info_by_id($course_id); - CourseManager::subscribeUser($user_id, $course_info['code']); + CourseManager::subscribeUser($user_id, $course_id); } } $params = [ diff --git a/public/main/inc/lib/webservices/Rest.php b/public/main/inc/lib/webservices/Rest.php index ce322bf109..0c27adc652 100644 --- a/public/main/inc/lib/webservices/Rest.php +++ b/public/main/inc/lib/webservices/Rest.php @@ -1392,10 +1392,7 @@ class Rest extends WebService if (!$course_id && !$course_code) { return [false]; } - if (!$course_code) { - $course_code = CourseManager::get_course_code_from_course_id($course_id); - } - if (CourseManager::subscribeUser($user_id, $course_code, $status)) { + if (CourseManager::subscribeUser($user_id, $course_id, $status)) { return [true]; } diff --git a/public/main/user/subscribe_user.php b/public/main/user/subscribe_user.php index fa89cab225..f0938211f5 100644 --- a/public/main/user/subscribe_user.php +++ b/public/main/user/subscribe_user.php @@ -71,14 +71,14 @@ if (isset($_REQUEST['Registerister'])) { } else { CourseManager::subscribeUser( $_REQUEST['user_id'], - $courseInfo['code'], + $courseInfo['real_id'], COURSEMANAGER ); } } else { CourseManager::subscribeUser( $_REQUEST['user_id'], - $courseInfo['code'] + $courseInfo['real_id'] ); } } @@ -106,10 +106,10 @@ if (isset($_POST['action'])) { $isSuscribe[] = $message; } } else { - CourseManager::subscribeUser($user_id, $courseInfo['code'], COURSEMANAGER); + CourseManager::subscribeUser($user_id, $courseInfo['real_id'], COURSEMANAGER); } } else { - CourseManager::subscribeUser($user_id, $courseInfo['code']); + CourseManager::subscribeUser($user_id, $courseInfo['real_id']); } } } diff --git a/public/main/user/user_import.php b/public/main/user/user_import.php index 0441b5176c..4fcc836224 100644 --- a/public/main/user/user_import.php +++ b/public/main/user/user_import.php @@ -105,7 +105,7 @@ if ($form->validate()) { foreach ($clean_users as $userId) { $userInfo = api_get_user_info($userId); - CourseManager::subscribeUser($userId, $course_code, $userType, $session_id); + CourseManager::subscribeUser($userId, $courseId, $userType, $session_id); if (empty($session_id)) { //just to make sure if (CourseManager::is_user_subscribed_in_course($userId, $course_code)) { diff --git a/public/main/webservices/cm_webservice_course.php b/public/main/webservices/cm_webservice_course.php index b0cfdad3a4..383695961d 100644 --- a/public/main/webservices/cm_webservice_course.php +++ b/public/main/webservices/cm_webservice_course.php @@ -453,7 +453,7 @@ class WSCMCourse extends WSCM $condition_msg_status = ' msg_status = 1 '; // define('MESSAGE_STATUS_UNREAD', '1'); $sql_query = "SELECT COUNT(*) as number_messages - FROM $table_message + FROM $table_message WHERE $condition_msg_status AND user_receiver_id=".$user_id; $sql_result = Database::query($sql_query); @@ -694,10 +694,10 @@ class WSCMCourse extends WSCM return true; } else { // Subscribe user - if (CourseManager::subscribeUser($user_id, $course_code, $status)) { + if (CourseManager::subscribeUser($user_id, $course_id, $status)) { return true; } else { - return new WSError(203, 'An error occured subscribing to this course'); + return new WSError(203, 'An error occurred subscribing to this course'); } } } diff --git a/public/main/webservices/registration.soap.php b/public/main/webservices/registration.soap.php index 70d7b9e5f1..83cd02162a 100644 --- a/public/main/webservices/registration.soap.php +++ b/public/main/webservices/registration.soap.php @@ -4640,9 +4640,9 @@ function WSSubscribeUserToCourse($params) $original_course_id['original_course_id_name'] ); - $courseCode = isset($courseInfo['code']) ? $courseInfo['code'] : ''; + $courseId = isset($courseInfo['real_id']) ? $courseInfo['real_id'] : ''; - if (empty($courseCode)) { + if (empty($courseId)) { if ($debug) { error_log('WSSubscribeUserToCourse course not found'); } @@ -4650,9 +4650,9 @@ function WSSubscribeUserToCourse($params) $resultValue = 0; } else { if ($debug) { - error_log('WSSubscribeUserToCourse courseCode: '.$courseCode); + error_log('WSSubscribeUserToCourse $courseId: '.$courseId); } - $result = CourseManager::subscribeUser($user_id, $courseCode, $status, 0, 0, false); + $result = CourseManager::subscribeUser($user_id, $courseId, $status, 0, 0, false); if ($result) { $resultValue = 1; if ($debug) { @@ -4766,7 +4766,7 @@ function WSSubscribeUserToCourseSimple($params) if ($debug) { error_log('Try to register: user_id= '.$user_id.' to course: '.$course_data['code']); } - if (!CourseManager::subscribeUser($user_id, $course_data['code'], $status, 0, false, false)) { + if (!CourseManager::subscribeUser($user_id, $course_data['real_id'], $status, 0, false, false)) { $result = 'User was not registered possible reasons: User already registered to the course, Course visibility doesnt allow user subscriptions '; if ($debug) { diff --git a/public/main/webservices/user_import/import.lib.php b/public/main/webservices/user_import/import.lib.php index 37c5f3606c..db9167c710 100644 --- a/public/main/webservices/user_import/import.lib.php +++ b/public/main/webservices/user_import/import.lib.php @@ -95,7 +95,7 @@ function complete_missing_data($user) function save_data($users) { if (is_array($users)) { - foreach ($users as $index => $user) { + foreach ($users as $user) { $user = complete_missing_data($user); $user['Status'] = api_status_key($user['Status']); $user_id = UserManager:: create_user( @@ -115,9 +115,10 @@ function save_data($users) if (!empty($user['Courses'])) { foreach ($user['Courses'] as $course) { if (CourseManager::course_exists($course)) { + $courseInfo = api_get_course_info($course); CourseManager::subscribeUser( $user_id, - $course, + $courseInfo['real_id'], $user['Status'] ); } diff --git a/public/main/webservices/webservice_course.php b/public/main/webservices/webservice_course.php index 144075b132..228c51911c 100644 --- a/public/main/webservices/webservice_course.php +++ b/public/main/webservices/webservice_course.php @@ -714,7 +714,7 @@ class WSCourse extends WS // Subscribe user if (CourseManager::subscribeUser( $user_id, - $course_code, + $course_id, $status ) ) { diff --git a/public/plugin/buycourses/src/buy_course_plugin.class.php b/public/plugin/buycourses/src/buy_course_plugin.class.php index db06b5cdd3..9291f10ad0 100644 --- a/public/plugin/buycourses/src/buy_course_plugin.class.php +++ b/public/plugin/buycourses/src/buy_course_plugin.class.php @@ -1127,8 +1127,7 @@ class BuyCoursesPlugin extends Plugin $saleIsCompleted = false; switch ($sale['product_type']) { case self::PRODUCT_TYPE_COURSE: - $course = api_get_course_info_by_id($sale['product_id']); - $saleIsCompleted = CourseManager::subscribeUser($sale['user_id'], $course['code']); + $saleIsCompleted = CourseManager::subscribeUser($sale['user_id'], $sale['product_id']); break; case self::PRODUCT_TYPE_SESSION: SessionManager::subscribeUsersToSession( diff --git a/public/plugin/justification/cron.php b/public/plugin/justification/cron.php index 806b97249f..c714509a1e 100644 --- a/public/plugin/justification/cron.php +++ b/public/plugin/justification/cron.php @@ -80,7 +80,7 @@ function subscribeUser($userId, $courseInfo) $courseId = $courseInfo['real_id']; $isUserSubscribed = CourseManager::is_user_subscribed_in_course($userId, $courseInfo['code']); if (false === $isUserSubscribed) { - CourseManager::subscribeUser($userId, $courseInfo['code'], STUDENT); + CourseManager::subscribeUser($userId, $courseId, STUDENT); echo "Subscribe user id #$userId to course #$courseId".PHP_EOL; } else { echo "Nothing to do user id #$userId is already subscribed to #$courseId".PHP_EOL; diff --git a/src/CoreBundle/Entity/CourseRelUser.php b/src/CoreBundle/Entity/CourseRelUser.php index db1cbefdf0..41ba066dca 100644 --- a/src/CoreBundle/Entity/CourseRelUser.php +++ b/src/CoreBundle/Entity/CourseRelUser.php @@ -115,6 +115,7 @@ class CourseRelUser $this->sort = 0; $this->tutor = false; $this->status = User::STUDENT; + $this->relationType = 0; } public function __toString(): string diff --git a/tests/scripts/users_no_course.php b/tests/scripts/users_no_course.php index 85a8f1b4af..74682b1941 100644 --- a/tests/scripts/users_no_course.php +++ b/tests/scripts/users_no_course.php @@ -12,7 +12,7 @@ require __DIR__.'/../../main/inc/global.inc.php'; api_protect_admin_script(); // Course that users with no course will be registered: -$courseCode = ''; +$courseId = ''; $user = Database::get_main_table(TABLE_MAIN_USER); $userCourse = Database::get_main_table(TABLE_MAIN_COURSE_USER); @@ -27,7 +27,7 @@ $students = Database::store_result($result); if (!empty($students)) { foreach ($students as $student) { var_dump($student['username'].'- '.$student['user_id']); - $result = CourseManager::subscribeUser($student['user_id'], $courseCode); + $result = CourseManager::subscribeUser($student['user_id'], $courseId); var_dump($result); echo '
'; }