Factorize fillCourse() static method to reduce create_course() complexity as suggested by #scrutinizer

remotes/angel/1.11.x
Yannick Warnier 9 years ago
parent 6df32bedee
commit 8697dc2c03
  1. 103
      main/inc/lib/course.lib.php

@ -45,35 +45,17 @@ class CourseManager
$access_url_id = api_get_current_access_url_id();
}
if (isset($_configuration[$access_url_id]) &&
is_array($_configuration[$access_url_id])
) {
if (isset($_configuration[$access_url_id]['hosting_limit_courses']) &&
$_configuration[$access_url_id]['hosting_limit_courses'] > 0
) {
$num = self::count_courses($access_url_id);
if ($num >= $_configuration[$access_url_id]['hosting_limit_courses']) {
api_warn_hosting_contact('hosting_limit_courses');
return api_set_failure(get_lang('PortalCoursesLimitReached'));
}
if (isset($_configuration[$access_url_id]) && is_array($_configuration[$access_url_id])) {
$return = self::checkCreateCourseAccessUrlParam($_configuration, $access_url_id, 'hosting_limit_courses', 'PortalCoursesLimitReached');
if ($return != false) {
return $return;
}
if (isset($_configuration[$access_url_id]['hosting_limit_active_courses']) &&
$_configuration[$access_url_id]['hosting_limit_active_courses'] > 0
) {
$num = self::countActiveCourses($access_url_id);
if ($num >= $_configuration[$access_url_id]['hosting_limit_active_courses']) {
api_warn_hosting_contact('hosting_limit_active_courses');
return api_set_failure(
get_lang('PortalActiveCoursesLimitReached')
);
}
$return = self::checkCreateCourseAccessUrlParam($_configuration, $access_url_id, 'hosting_limit_active_courses', 'PortalActiveCoursesLimitReached');
if ($return != false) {
return $return;
}
}
if (empty($params['title'])) {
return false;
}
@ -107,27 +89,7 @@ class CourseManager
$course_info = api_get_course_info_by_id($course_id);
if (!empty($course_info)) {
AddCourse::prepare_course_repository($course_info['directory'], $course_info['code']);
AddCourse::fill_db_course(
$course_id,
$course_info['directory'],
$course_info['course_language'],
$params['exemplary_content']
);
if (isset($params['gradebook_model_id'])) {
CourseManager::createDefaultGradebook($params['gradebook_model_id'], $course_info['code']);
}
// If parameter defined, copy the contents from a specific
// template course into this new course
if (isset($params['course_template'])) {
CourseManager::useTemplateAsBasisIfRequired($course_info['id'], $params['course_template']);
}
$params['course_code'] = $course_info['code'];
$params['item_id'] = $course_info['real_id'];
$courseFieldValue = new ExtraFieldValue('course');
$courseFieldValue->saveFieldValues($params);
self::fillCourse($course_info, $params);
return $course_info;
}
@ -5988,4 +5950,53 @@ class CourseManager
return $registered_users_with_extra_field;
}
/**
* Check if a specific access-url-related setting is a problem or not
* @param array $_configuration The $_configuration array
* @param int $accessUrlId The access URL ID
* @param string $param
* @param string $msgLabel
* @return bool|string
*/
private static function checkCreateCourseAccessUrlParam($_configuration, $accessUrlId, $param, $msgLabel) {
if (isset($_configuration[$accessUrlId][$param]) && $_configuration[$accessUrlId][$param] > 0) {
$num = self::count_courses($accessUrlId);
if ($num >= $_configuration[$accessUrlId][$param]) {
api_warn_hosting_contact($param);
return api_set_failure(get_lang($msgLabel));
}
}
return false;
}
/**
* Fill course with all necessary items
* @param array $courseInfo Course info array
* @param array $params Parameters from the course creation form
* @return void
*/
private static function fillCourse($courseInfo, $params) {
AddCourse::prepare_course_repository($courseInfo['directory'], $courseInfo['code']);
AddCourse::fill_db_course(
$courseInfo['real_id'],
$courseInfo['directory'],
$courseInfo['course_language'],
$params['exemplary_content']
);
if (isset($params['gradebook_model_id'])) {
CourseManager::createDefaultGradebook($params['gradebook_model_id'], $courseInfo['code']);
}
// If parameter defined, copy the contents from a specific
// template course into this new course
if (isset($params['course_template'])) {
CourseManager::useTemplateAsBasisIfRequired($courseInfo['id'], $params['course_template']);
}
$params['course_code'] = $courseInfo['code'];
$params['item_id'] = $courseInfo['real_id'];
$courseFieldValue = new ExtraFieldValue('course');
$courseFieldValue->saveFieldValues($params);
}
}

Loading…
Cancel
Save