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. 75
      main/inc/lib/course.lib.php
  3. 2
      main/inc/lib/sessionmanager.lib.php
  4. 42
      main/user/subscribe_user.php

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

@ -598,7 +598,7 @@ class CourseManager
$status = ($status == STUDENT || $status == COURSEMANAGER) ? $status : STUDENT; $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)." $sql = "SELECT status FROM ".Database::get_main_table(TABLE_MAIN_USER)."
WHERE user_id = $user_id"; WHERE user_id = $user_id";
if (Database::num_rows(Database::query($sql)) == 0) { if (Database::num_rows(Database::query($sql)) == 0) {
@ -646,36 +646,42 @@ class CourseManager
$courseId, $courseId,
$session_id $session_id
); );
return true;
} else { } else {
self::add_user_to_course( $userAdded = self::add_user_to_course(
$user_id, $user_id,
$courseCode, $courseCode,
$status, $status,
$userCourseCategoryId $userCourseCategoryId
); );
// Add event to the system log if ($userAdded) {
Event::addEvent( // Add event to the system log
LOG_SUBSCRIBE_USER_TO_COURSE, Event::addEvent(
LOG_COURSE_CODE, LOG_SUBSCRIBE_USER_TO_COURSE,
$courseCode, LOG_COURSE_CODE,
api_get_utc_datetime(), $courseCode,
api_get_user_id(), api_get_utc_datetime(),
$courseId api_get_user_id(),
); $courseId
);
$userInfo = api_get_user_info($user_id); $userInfo = api_get_user_info($user_id);
Event::addEvent( Event::addEvent(
LOG_SUBSCRIBE_USER_TO_COURSE, LOG_SUBSCRIBE_USER_TO_COURSE,
LOG_USER_OBJECT, LOG_USER_OBJECT,
$userInfo, $userInfo,
api_get_utc_datetime(), api_get_utc_datetime(),
api_get_user_id(), api_get_user_id(),
$courseId $courseId
); );
}
return true; return true;
}
return false;
}
} }
/** /**
@ -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. // Ok, subscribe the user.
$max_sort = api_max_sort_value('0', $user_id); $max_sort = api_max_sort_value('0', $user_id);
$params = [ $params = [

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

@ -71,19 +71,25 @@ if (isset($_REQUEST['register'])) {
); );
Display::addFlash(Display::return_message($message)); Display::addFlash(Display::return_message($message));
} else { } else {
CourseManager::subscribe_user( $result = CourseManager::subscribe_user(
$_REQUEST['user_id'], $_REQUEST['user_id'],
$courseInfo['code'], $courseInfo['code'],
COURSEMANAGER COURSEMANAGER
); );
Display::addFlash(Display::return_message($message)); if ($result) {
Display::addFlash(Display::return_message($message));
}
} }
} else { } else {
CourseManager::subscribe_user( $result = CourseManager::subscribe_user(
$_REQUEST['user_id'], $_REQUEST['user_id'],
$courseInfo['code'] $courseInfo['code']
); );
Display::addFlash(Display::return_message($message)); 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); 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']) { switch ($_POST['action']) {
case 'subscribe': case 'subscribe':
if (is_array($_POST['user'])) { if (is_array($_POST['user'])) {
$isSuscribe = [];
foreach ($_POST['user'] as $index => $user_id) { foreach ($_POST['user'] as $index => $user_id) {
$userInfo = api_get_user_info($user_id); $userInfo = api_get_user_info($user_id);
if ($userInfo) { if ($userInfo) {
$message = $userInfo['complete_name_with_username'].' '.get_lang('AddedToCourse');
if ($type === COURSEMANAGER) { if ($type === COURSEMANAGER) {
if (!empty($sessionId)) { if (!empty($sessionId)) {
$is_suscribe[] = SessionManager::set_coach_to_course_session( $result = SessionManager::set_coach_to_course_session(
$user_id, $user_id,
$sessionId, $sessionId,
$courseInfo['real_id'] $courseInfo['real_id']
); );
if ($result) {
$isSuscribe[] = $message;
}
} else { } else {
$is_suscribe[] = CourseManager::subscribe_user( $result = CourseManager::subscribe_user(
$user_id, $user_id,
$courseInfo['code'], $courseInfo['code'],
COURSEMANAGER COURSEMANAGER
); );
if ($result) {
$isSuscribe[] = $message;
}
} }
} else { } else {
$is_suscribe[] = CourseManager::subscribe_user( $result = CourseManager::subscribe_user(
$user_id, $user_id,
$courseInfo['code'] $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