Read "max_subscribed_students" course extra field to block subscription

See BT#15114
pull/2757/head^2
Julio Montoya 7 years ago
parent a6f7d87319
commit 02f1ba7b40
  1. 2
      main/course_info/infocours.php
  2. 37
      main/inc/lib/course.lib.php
  3. 2
      main/inc/lib/sessionmanager.lib.php
  4. 38
      main/user/subscribe_user.php

@ -129,7 +129,7 @@ $form->applyFilter('department_url', 'html_filter');
$extra_field = new ExtraField('course');
$extraFieldAdminPermissions = false;
$showOnlyTheseFields = ['tags', 'video_url', 'course_hours_duration'];
$showOnlyTheseFields = ['tags', 'video_url', 'course_hours_duration', 'max_subscribed_students'];
$extra = $extra_field->addElements(
$form,
$courseId,

@ -598,7 +598,7 @@ class CourseManager
$status = ($status == STUDENT || $status == COURSEMANAGER) ? $status : STUDENT;
// A preliminary check whether the user has bben already registered on the platform.
// A preliminary check whether the user has been already registered on the platform.
$sql = "SELECT status FROM ".Database::get_main_table(TABLE_MAIN_USER)."
WHERE user_id = $user_id";
if (Database::num_rows(Database::query($sql)) == 0) {
@ -646,14 +646,17 @@ class CourseManager
$courseId,
$session_id
);
return true;
} else {
self::add_user_to_course(
$userAdded = self::add_user_to_course(
$user_id,
$courseCode,
$status,
$userCourseCategoryId
);
if ($userAdded) {
// Add event to the system log
Event::addEvent(
LOG_SUBSCRIBE_USER_TO_COURSE,
@ -673,11 +676,14 @@ class CourseManager
api_get_user_id(),
$courseId
);
}
return true;
}
return false;
}
}
/**
* Get the course id based on the original id and field name in the
* extra fields. Returns 0 if course was not found.
@ -812,6 +818,31 @@ class CourseManager
}
}
if ($status === STUDENT) {
// 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,
null,
true,
false
);
if ($count >= $maxStudents) {
return false;
}
}
}
}
// Ok, subscribe the user.
$max_sort = api_max_sort_value('0', $user_id);
$params = [

@ -3404,7 +3404,7 @@ class SessionManager
$noCoach = false
) {
// Definition of variables
$userId = intval($userId);
$userId = (int) $userId;
$sessionId = !empty($sessionId) ? intval($sessionId) : api_get_session_id();
$courseId = !empty($courseId) ? intval($courseId) : api_get_course_id();

@ -71,19 +71,25 @@ if (isset($_REQUEST['register'])) {
);
Display::addFlash(Display::return_message($message));
} else {
CourseManager::subscribe_user(
$result = CourseManager::subscribe_user(
$_REQUEST['user_id'],
$courseInfo['code'],
COURSEMANAGER
);
if ($result) {
Display::addFlash(Display::return_message($message));
}
}
} else {
CourseManager::subscribe_user(
$result = CourseManager::subscribe_user(
$_REQUEST['user_id'],
$courseInfo['code']
);
if ($result) {
Display::addFlash(Display::return_message($message));
} else {
Display::addFlash(Display::return_message(get_lang('ErrorContactPlatformAdmin'), 'warning'));
}
}
}
header('Location:'.api_get_path(WEB_CODE_PATH).'user/user.php?'.api_get_cidreq().'&type='.$type);
@ -94,31 +100,49 @@ if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'subscribe':
if (is_array($_POST['user'])) {
$isSuscribe = [];
foreach ($_POST['user'] as $index => $user_id) {
$userInfo = api_get_user_info($user_id);
if ($userInfo) {
$message = $userInfo['complete_name_with_username'].' '.get_lang('AddedToCourse');
if ($type === COURSEMANAGER) {
if (!empty($sessionId)) {
$is_suscribe[] = SessionManager::set_coach_to_course_session(
$result = SessionManager::set_coach_to_course_session(
$user_id,
$sessionId,
$courseInfo['real_id']
);
if ($result) {
$isSuscribe[] = $message;
}
} else {
$is_suscribe[] = CourseManager::subscribe_user(
$result = CourseManager::subscribe_user(
$user_id,
$courseInfo['code'],
COURSEMANAGER
);
if ($result) {
$isSuscribe[] = $message;
}
}
} else {
$is_suscribe[] = CourseManager::subscribe_user(
$result = CourseManager::subscribe_user(
$user_id,
$courseInfo['code']
);
if ($result) {
$isSuscribe[] = $message;
} else {
$isSuscribe[] = get_lang('ErrorContactPlatformAdmin').' '.$userInfo['complete_name_with_username'];
}
$message = $userInfo['complete_name_with_username'].' '.get_lang('AddedToCourse');
Display::addFlash(Display::return_message($message));
}
}
}
if (!empty($isSuscribe)) {
foreach ($isSuscribe as $info) {
Display::addFlash(Display::return_message($info));
}
}
}

Loading…
Cancel
Save