Partial using $params instead variable per variable when creating a new course see #4068

skala
Julio Montoya 14 years ago
parent d813a5463f
commit bcd4619f28
  1. 44
      main/admin/course_add.php
  2. 11
      main/admin/course_edit.php
  3. 13
      main/admin/course_import.php
  4. 13
      main/create_course/add_course.php
  5. 73
      main/inc/lib/add_course.lib.inc.php
  6. 42
      main/inc/lib/course.lib.php
  7. 55
      main/inc/lib/course_request.lib.php
  8. 47
      main/webservices/registration.soap.php
  9. 5
      tests/main/inc/lib/add_course.lib.inc.test.php

@ -43,7 +43,7 @@ if ($_configuration['multiple_access_urls']) {
$res = Database::query($sql); $res = Database::query($sql);
$teachers = array(); $teachers = array();
$teachers[0] = '-- '.get_lang('NoManager').' --'; //$teachers[0] = '-- '.get_lang('NoManager').' --';
while($obj = Database::fetch_object($res)) { while($obj = Database::fetch_object($res)) {
$teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname); $teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname);
} }
@ -68,10 +68,10 @@ $form->applyFilter('visual_code', 'api_strtoupper');
$form->applyFilter('visual_code', 'html_filter'); $form->applyFilter('visual_code', 'html_filter');
$form->addRule('visual_code', get_lang('Max'), 'maxlength', $maxlength); $form->addRule('visual_code', get_lang('Max'), 'maxlength', $maxlength);
$form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'tutor_id')); //$form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'tutor_id'));
$form->applyFilter('tutor_id', 'html_filter'); //$form->applyFilter('tutor_id', 'html_filter');
$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, ' id="course_teachers" style="width:350px" multiple="multiple" size="5"'); $form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, ' id="course_teachers" class="chzn-select" style="width:350px" multiple="multiple" size="5"');
$form->applyFilter('course_teachers', 'html_filter'); $form->applyFilter('course_teachers', 'html_filter');
$categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'category_code')); $categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories, array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'category_code'));
@ -125,37 +125,25 @@ $values['visibility'] = COURSE_VISIBILITY_OPEN_PLATFORM;
$values['subscribe'] = 1; $values['subscribe'] = 1;
$values['unsubscribe'] = 0; $values['unsubscribe'] = 0;
reset($teachers); reset($teachers);
$values['course_teachers'] = key($teachers); //$values['course_teachers'] = key($teachers);
$form->setDefaults($values); $form->setDefaults($values);
// Validate the form. // Validate the form
if ($form->validate()) { if ($form->validate()) {
$course = $form->exportValues(); $course = $form->exportValues();
$code = $course['visual_code']; $code = $course['visual_code'];
$tutor_name = $teachers[$course['tutor_id']]; //$tutor_name = $teachers[$course['tutor_id']];
$teacher_id = $course['tutor_id']; $teacher_id = $course['tutor_id'];
$course_teachers = $course['course_teachers']; $course_teachers = $course['course_teachers'];
$test = false;
$course['exemplary_content'] = empty($course['exemplary_content']) ? false : true;
// The course tutor has been selected in the teachers list so we must remove him to avoid double records in the database. $course['teachers'] = $course_teachers;
foreach ($course_teachers as $key => $value){ //$course['tutor_name'] = $tutor_name;
if ($value == $teacher_id) { $course['user_id'] = $teacher_id;
unset($course_teachers[$key]); $course['wanted_code'] = $course['visual_code'];
break;
} $course_info = CourseManager::create_course($course);
}
$title = $course['title'];
$category_code = $course['category_code'];
$department_name = $course['department_name'];
$department_url = $course['department_url'];
$course_language = $course['course_language'];
$exemplary_content = empty($course['exemplary_content']) ? false : true;
$disk_quota = $course['disk_quota'];
$course_info = CourseManager::create_course($title, '', '', $exemplary_content,
$tutor_name, $category_code, $course_language, api_get_user_id(),
$department_name, $department_url, $disk_quota, $course['subscribe'], $course['unsubscribe'], $course['visibility'], $course_teachers);
header('Location: course_list.php'); header('Location: course_list.php');
exit; exit;
} }

@ -65,11 +65,11 @@ $teachers = array();
$platform_teachers[0] = '-- '.get_lang('NoManager').' --'; $platform_teachers[0] = '-- '.get_lang('NoManager').' --';
while ($obj = Database::fetch_object($res)) { while ($obj = Database::fetch_object($res)) {
if (!array_key_exists($obj->user_id,$course_teachers)) { if (!array_key_exists($obj->user_id,$course_teachers)) {
$teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname); $teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname);
} }
if ($course['tutor_name']==$course_teachers[$obj->user_id]) { if ($course['tutor_name']==$course_teachers[$obj->user_id]) {
$course['tutor_name']=$obj->user_id; $course['tutor_name']=$obj->user_id;
} }
@ -98,15 +98,16 @@ $form->add_textfield('visual_code', array(get_lang('CourseCode'), get_lang('Only
$form->applyFilter('visual_code','strtoupper'); $form->applyFilter('visual_code','strtoupper');
$form->applyFilter('visual_code','html_filter'); $form->applyFilter('visual_code','html_filter');
//$form->add_textfield('tutor_name', get_lang('CourseTitular')); //$form->add_textfield('tutor_name', get_lang('CourseTitular'));
$form->addElement('select', 'tutor_name', get_lang('CourseTitular'), $platform_teachers, array('style'=>'width:350px','id'=>'tutor_name_id', 'class'=>'chzn-select')); //$form->addElement('select', 'tutor_name', get_lang('CourseTitular'), $platform_teachers, array('style'=>'width:350px','id'=>'tutor_name_id', 'class'=>'chzn-select'));
$form->applyFilter('tutor_name','html_filter'); //$form->applyFilter('tutor_name','html_filter');
//$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size="4" style="width: 150px;"'); //$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size="4" style="width: 150px;"');
$group=array(); $group=array();
$group[] = FormValidator::createElement('select', 'platform_teachers', '', $teachers, 'id="platform_teachers" multiple=multiple size="4" style="width:280px;"'); $group[] = FormValidator::createElement('select', 'platform_teachers', '', $teachers, ' id="platform_teachers" multiple=multiple size="4" style="width:300px;"');
$group[] = FormValidator::createElement('select', 'course_teachers', '', $course_teachers, 'id="course_teachers" multiple=multiple size="4" style="width:280px;"'); $group[] = FormValidator::createElement('select', 'course_teachers', '', $course_teachers, ' id="course_teachers" multiple=multiple size="4" style="width:300px;"');
$element_template = <<<EOT $element_template = <<<EOT
<div class="row"> <div class="row">

@ -120,8 +120,17 @@ function save_data($courses) {
$uidCreator = 1; $uidCreator = 1;
} }
$course_info = CourseManager::create_course($course['Title'], $course['Code'], '', false, $params = array();
$titular, $course['CourseCategory'], $course_language, $uidCreator); $params['title'] = $course['Title'];
$params['wanted_code'] = $course['Code'];
$params['tutor_name'] = $titular;
$params['course_category'] = $course['CourseCategory'];
$params['course_category'] = $course['CourseCategory'];
$params['course_language'] = $course_language;
$params['user_id'] = $uidCreator;
$course_info = CourseManager::create_course($params);
if (!empty($course_info)) { if (!empty($course_info)) {
$msg .= '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/">'.$course_info['title'].'</a> '.get_lang('Created').'<br />'; $msg .= '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/">'.$course_info['title'].'</a> '.get_lang('Created').'<br />';
} }

@ -231,8 +231,17 @@ if ($form->validate()) {
if ($course_code_ok) { if ($course_code_ok) {
if (!$course_validation_feature) { if (!$course_validation_feature) {
$course_info = CourseManager::create_course($title, $wanted_code, '', $exemplary_content,
$tutor_name, $category_code, $course_language); $params = array();
$params['title'] = $title;
$params['exemplary_content'] = $exemplary_content;
$params['wanted_code'] = $wanted_code;
$params['tutor_name'] = $tutor_name;
$params['category_code'] = $category_code;
$params['course_language'] = $course_language;
$course_info = CourseManager::create_course($params);
if (!empty($course_info)) { if (!empty($course_info)) {
$directory = $course_info['directory']; $directory = $course_info['directory'];

@ -2600,23 +2600,43 @@ function string2binary($variable) {
* @param integer Expiration date in unix time representation * @param integer Expiration date in unix time representation
* @param array Optional array of teachers' user ID * @param array Optional array of teachers' user ID
* @return int 0 * @return int 0
* @todo use an array called $params instead of lots of params
*/ */
function register_course($title, $course_sys_code, $course_screen_code, $course_repository, function register_course($params) {
$tutor_name, $category_code, $course_language, $user_id, $department_name, $department_url, $disk_quota, $subscribe, $unsubscribe, $visibility, $expiration_date, $teachers) {
global $defaultVisibilityForANewCourse, $error_msg, $firstExpirationDelay; global $defaultVisibilityForANewCourse, $error_msg, $firstExpirationDelay;
$title = $params['title'];
$code = $params['code'];
$visual_code = $params['visual_code'];
$directory = $params['directory'];
$tutor_name = $params['tutor_name'];
$description = $params['description'];
$category_code = $params['category_code'];
$course_language = isset($params['course_language']) && !empty($params['course_language']) ? $params['course_language'] : api_get_setting('platformLanguage');
$user_id = empty($params['user_id']) ? api_get_user_id() : intval($params['user_id']);
$department_name = $params['department_name'];
$department_url = $params['department_url'];
$disk_quota = $params['disk_quota'];
$subscribe = isset($params['subscribe']) ? intval($params['subscribe']) : 0;
$unsubscribe = isset($params['unsubscribe']) ? intval($params['unsubscribe']) : 0;
$visibility = $params['visibility'];
$expiration_date = $params['expiration_date'];
$teachers = $params['teachers'];
$status = $params['status'];
$TABLECOURSE = Database :: get_main_table(TABLE_MAIN_COURSE); $TABLECOURSE = Database :: get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$ok_to_register_course = true; $ok_to_register_course = true;
// Check whether all the needed parameters are present. // Check whether all the needed parameters are present.
if (empty($course_sys_code)) { if (empty($code)) {
$error_msg[] = 'courseSysCode is missing'; $error_msg[] = 'courseSysCode is missing';
$ok_to_register_course = false; $ok_to_register_course = false;
} }
if (empty($course_screen_code)) { if (empty($visual_code)) {
$error_msg[] = 'courseScreenCode is missing'; $error_msg[] = 'courseScreenCode is missing';
$ok_to_register_course = false; $ok_to_register_course = false;
} }
@ -2626,7 +2646,7 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
$error_msg[] = 'courseDbName is missing'; $error_msg[] = 'courseDbName is missing';
//$ok_to_register_course = false; //$ok_to_register_course = false;
}*/ }*/
if (empty($course_repository)) { if (empty($directory)) {
$error_msg[] = 'courseRepository is missing'; $error_msg[] = 'courseRepository is missing';
$ok_to_register_course = false; $ok_to_register_course = false;
} }
@ -2636,9 +2656,6 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
$ok_to_register_course = false; $ok_to_register_course = false;
} }
if (empty($course_language)) {
$course_language = api_get_setting('platformLanguage');
}
if (empty($expiration_date)) { if (empty($expiration_date)) {
$expiration_date = api_get_utc_datetime(time() + $firstExpirationDelay); $expiration_date = api_get_utc_datetime(time() + $firstExpirationDelay);
@ -2661,34 +2678,21 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
$time = api_get_utc_datetime(); $time = api_get_utc_datetime();
if ($subscribe != '') {
$subscribe = 1;
}
if ($unsubscribe != '') {
$unsubscribe = 0;
}
if (stripos($department_url, 'http://') === false && stripos($department_url, 'https://') === false) { if (stripos($department_url, 'http://') === false && stripos($department_url, 'https://') === false) {
$department_url = 'http://'.$department_url; $department_url = 'http://'.$department_url;
} }
//just in case //just in case
if ($department_url = 'http://') { if ($department_url == 'http://') {
$department_url = ''; $department_url = '';
} }
if (empty($user_id)) {
$user_id = api_get_user_id();
}
$course_id = 0; $course_id = 0;
if ($ok_to_register_course) { if ($ok_to_register_course) {
// Here we must add 2 fields. // Here we must add 2 fields.
$sql = "INSERT INTO ".$TABLECOURSE . " SET $sql = "INSERT INTO ".$TABLECOURSE . " SET
code = '".Database :: escape_string($course_sys_code) . "', code = '".Database :: escape_string($code) . "',
directory = '".Database :: escape_string($course_repository) . "', directory = '".Database :: escape_string($directory) . "',
course_language = '".Database :: escape_string($course_language) . "', course_language = '".Database :: escape_string($course_language) . "',
title = '".Database :: escape_string($title) . "', title = '".Database :: escape_string($title) . "',
description = '".lang2db(get_lang('CourseDescription')) . "', description = '".lang2db(get_lang('CourseDescription')) . "',
@ -2705,7 +2709,7 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
department_url = '".Database :: escape_string($department_url) . "', department_url = '".Database :: escape_string($department_url) . "',
subscribe = '".intval($subscribe) . "', subscribe = '".intval($subscribe) . "',
unsubscribe = '".intval($unsubscribe) . "', unsubscribe = '".intval($unsubscribe) . "',
visual_code = '".Database :: escape_string($course_screen_code) . "'"; visual_code = '".Database :: escape_string($visual_code) . "'";
Database::query($sql); Database::query($sql);
$course_id = Database::get_last_insert_id(); $course_id = Database::get_last_insert_id();
@ -2714,10 +2718,10 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
$sort = api_max_sort_value('0', api_get_user_id()); $sort = api_max_sort_value('0', api_get_user_id());
$i_course_sort = CourseManager :: userCourseSort($user_id, $course_sys_code); $i_course_sort = CourseManager :: userCourseSort($user_id, $code);
$sql = "INSERT INTO ".$TABLECOURSUSER . " SET $sql = "INSERT INTO ".$TABLECOURSUSER . " SET
course_code = '".Database :: escape_string($course_sys_code). "', course_code = '".Database :: escape_string($code). "',
user_id = '".intval($user_id) . "', user_id = '".intval($user_id) . "',
status = '1', status = '1',
role = '".lang2db(get_lang('Professor')) . "', role = '".lang2db(get_lang('Professor')) . "',
@ -2726,10 +2730,13 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
user_course_cat = '0'"; user_course_cat = '0'";
Database::query($sql); Database::query($sql);
if (count($teachers) > 0) { if (!empty($teachers)) {
foreach ($teachers as $key) { foreach ($teachers as $key) {
if (empty($key)) {
continue;
}
$sql = "INSERT INTO ".$TABLECOURSUSER . " SET $sql = "INSERT INTO ".$TABLECOURSUSER . " SET
course_code = '".Database::escape_string($course_sys_code) . "', course_code = '".Database::escape_string($code) . "',
user_id = '".Database::escape_string($key) . "', user_id = '".Database::escape_string($key) . "',
status = '1', status = '1',
role = '', role = '',
@ -2748,14 +2755,14 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_
if (api_get_current_access_url_id() != -1) { if (api_get_current_access_url_id() != -1) {
$url_id = api_get_current_access_url_id(); $url_id = api_get_current_access_url_id();
} }
UrlManager::add_course_to_url($course_sys_code, $url_id); UrlManager::add_course_to_url($code, $url_id);
} else { } else {
UrlManager::add_course_to_url($course_sys_code, 1); UrlManager::add_course_to_url($code, 1);
} }
// Add event to the system log. // Add event to the system log.
$user_id = api_get_user_id(); $user_id = api_get_user_id();
event_system(LOG_COURSE_CREATE, LOG_COURSE_CODE, $course_sys_code, api_get_utc_datetime(), $user_id, $course_sys_code); event_system(LOG_COURSE_CREATE, LOG_COURSE_CODE, $code, api_get_utc_datetime(), $user_id, $code);
$send_mail_to_admin = api_get_setting('send_email_to_admin_when_create_course'); $send_mail_to_admin = api_get_setting('send_email_to_admin_when_create_course');

@ -116,58 +116,56 @@ $coursesRepositories = $_configuration['root_sys'];
*/ */
class CourseManager { class CourseManager {
var $columns = array('code', 'directory', 'db_name', '');
/** /**
* Creates a course * Creates a course
* @param string course title * @param string course title
* @param bool add example content or not * @param bool add example content or not
* @param mixed false if the course was not created, array with the course info * @param mixed false if the course was not created, array with the course info
*/ */
function create_course($title, $wanted_code = '', $description = '', $fill_with_exemplary_content = false, function create_course($params) {
$tutor_name = '', $category_code = '', $course_language = '', $user_id = '',
$department_name = '', $department_url = '', $disk_quota = '',
$subscribe = '', $unsubscribe = '', $visibility = '', $expiration_date = '', $teacher_list = array()
) {
global $_configuration; global $_configuration;
if (empty($title)) { if (empty($params['title'])) {
return false; return false;
} }
if (empty($wanted_code)) { if (empty($params['wanted_code'])) {
$wanted_code = $title; $params['wanted_code'] = $params['title'];
// Check whether the requested course code has already been occupied. // Check whether the requested course code has already been occupied.
$dbnamelength = strlen($_configuration['db_prefix']); $dbnamelength = strlen($_configuration['db_prefix']);
// Ensure the database prefix + database name do not get over 40 characters. // Ensure the database prefix + database name do not get over 40 characters.
$maxlength = 40 - $dbnamelength; $maxlength = 40 - $dbnamelength;
$wanted_code = generate_course_code(api_substr($title, 0, $maxlength)); $params['wanted_code'] = generate_course_code(api_substr($params['title'], 0, $maxlength));
} }
// Create the course immediately // Create the course immediately
$keys = define_course_keys($wanted_code); $keys = define_course_keys($params['wanted_code']);
$params['exemplary_content'] = isset($params['exemplary_content']) ? $params['exemplary_content'] : false;
if (count($keys)) { if (count($keys)) {
$current_course_code = $keys['currentCourseCode'];
$current_course_id = $keys['currentCourseId'];
$current_course_repository = $keys['currentCourseRepository'];
$course_info = api_get_course_info($current_course_code); $params['code'] = $keys['currentCourseCode'];
$params['visual_code'] = $keys['currentCourseId'];
$params['directory'] = $keys['currentCourseRepository'];
$course_info = api_get_course_info($params['code']);
if (empty($course_info)) { if (empty($course_info)) {
$course_id = register_course($title, $current_course_id, $current_course_code, $current_course_repository, $course_id = register_course($params);
$tutor_name, $category_code, $course_language, $user_id, $department_name, $department_url, $disk_quota,
$subscribe, $unsubscribe, $visibility, $expiration_date, $teacher_list);
if (!empty($course_id)) {
prepare_course_repository($current_course_repository, $current_course_id);
$pictures_array = fill_course_repository($current_course_repository, $fill_with_exemplary_content);
fill_Db_course($course_id, $current_course_repository, $course_language, $pictures_array, $fill_with_exemplary_content);
$course_info = api_get_course_info_by_id($course_id); $course_info = api_get_course_info_by_id($course_id);
if (!empty($course_info)) { if (!empty($course_info)) {
prepare_course_repository($course_info['directory'], $course_info['code']);
$pictures_array = fill_course_repository($course_info['directory'], $params['exemplary_content']);
fill_Db_course($course_id, $course_info['directory'], $course_info['course_language'], $pictures_array, $params['exemplary_content']);
return $course_info; return $course_info;
} }
} }
} }
}
return false; return false;
} }

@ -77,13 +77,13 @@ class CourseRequestManager {
if (!is_array($user_info)) { if (!is_array($user_info)) {
return false; return false;
} }
$tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language); $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
$request_date = api_get_utc_datetime(); $request_date = api_get_utc_datetime();
$status = COURSE_REQUEST_PENDING; $status = COURSE_REQUEST_PENDING;
$info = 0; $info = 0;
$keys = define_course_keys($wanted_code, '');
$keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']);
if (!count($keys)) { if (!count($keys)) {
return false; return false;
} }
@ -218,7 +218,7 @@ class CourseRequestManager {
if (self::course_code_exists($wanted_code)) { if (self::course_code_exists($wanted_code)) {
return false; return false;
} }
$keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); $keys = define_course_keys($wanted_code, '');
if (count($keys)) { if (count($keys)) {
$visual_code = $keys['currentCourseCode']; $visual_code = $keys['currentCourseCode'];
$code = $keys['currentCourseId']; $code = $keys['currentCourseId'];
@ -337,42 +337,32 @@ class CourseRequestManager {
} }
// Make all the checks again before the new course creation. // Make all the checks again before the new course creation.
$wanted_code = $course_request_info['code'];
if (CourseManager::course_code_exists($wanted_code)) { if (CourseManager::course_code_exists($wanted_code)) {
return false; return false;
} }
$title = $course_request_info['title'];
$category_code = $course_request_info['category_code'];
$course_language = $course_request_info['course_language'];
$exemplary_content = intval($course_request_info['exemplary_content']) > 0;
$user_id = (int)$course_request_info['user_id']; $user_id = (int)$course_request_info['user_id'];
if ($user_id <= 0) { if ($user_id <= 0) {
return false; return false;
} }
$user_info = api_get_user_info($user_id); $user_info = api_get_user_info($user_id);
if (!is_array($user_info)) { if (!is_array($user_info)) {
return false; return false;
} }
$tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
// Create the requested course. // Create the requested course
$params = array();
$keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); $params['title'] = $course_request_info['title'];
if (!count($keys)) { $params['category_code'] = $course_request_info['category_code'];
return false; $params['course_language'] = $course_request_info['course_language'];
} $params['exemplary_content'] = intval($course_request_info['exemplary_content']) > 0;
$visual_code = $keys['currentCourseCode']; $params['wanted_code'] = $course_request_info['code'];
$code = $keys['currentCourseId']; $params['user_id'] = $course_request_info['user_id'];
$db_name = $keys['currentCourseDbName']; $params['tutor_name'] = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
$directory = $keys['currentCourseRepository'];
prepare_course_repository($directory, $code); $course_info = CourseManager::create_course($params);
update_Db_course($db_name); if (!empty($course_info)) {
$pictures_array = fill_course_repository($directory, $exemplary_content);
fill_Db_course($db_name, $directory, $course_language, $pictures_array, $exemplary_content);
register_course($code, $visual_code, $directory, $db_name, $tutor_name, $category_code, $title, $course_language, $user_id, null);
// Mark the request as accepted. // Mark the request as accepted.
$sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id; $sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id;
@ -380,16 +370,14 @@ class CourseRequestManager {
// E-mail notification. // E-mail notification.
// E-mail language: The platform language seems to be the best choice. // E-mail language: The platform language seems to be the best choice
//$email_language = $course_language;
//$email_language = api_get_interface_language();
$email_language = api_get_setting('platformLanguage'); $email_language = api_get_setting('platformLanguage');
$email_subject = sprintf(get_lang('CourseRequestAcceptedEmailSubject', null, $email_language), '['.api_get_setting('siteName').']', $wanted_code); $email_subject = sprintf(get_lang('CourseRequestAcceptedEmailSubject', null, $email_language), '['.api_get_setting('siteName').']', $course_info['code']);
$email_body = get_lang('Dear', null, $email_language).' '; $email_body = get_lang('Dear', null, $email_language).' ';
$email_body .= api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $email_language).",\n\n"; $email_body .= api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $email_language).",\n\n";
$email_body .= sprintf(get_lang('CourseRequestAcceptedEmailText', null, $email_language), $wanted_code, $code, api_get_path(WEB_COURSE_PATH).$directory.'/')."\n"; $email_body .= sprintf(get_lang('CourseRequestAcceptedEmailText', null, $email_language), $wanted_code, $course_info['code'], api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/')."\n";
$email_body .= "\n".get_lang('Formula', null, $email_language)."\n"; $email_body .= "\n".get_lang('Formula', null, $email_language)."\n";
$email_body .= api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, null, $email_language)."\n"; $email_body .= api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, null, $email_language)."\n";
$email_body .= get_lang('Manager', null, $email_language).' '.api_get_setting('siteName')."\n"; $email_body .= get_lang('Manager', null, $email_language).' '.api_get_setting('siteName')."\n";
@ -404,8 +392,9 @@ class CourseRequestManager {
$extra_headers = 'Bcc: '.$sender_email; $extra_headers = 'Bcc: '.$sender_email;
@api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email); @api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email);
return $course_info['code'];
return $code; }
return false;
} }
/** /**

@ -1989,7 +1989,7 @@ $server->register('WSCreateCourse', // method name
// Define the method WSCreateCourse // Define the method WSCreateCourse
function WSCreateCourse($params) { function WSCreateCourse($params) {
global $firstExpirationDelay, $_configuration; global $_configuration;
if(!WSHelperVerifyKey($params)) { if(!WSHelperVerifyKey($params)) {
return -1; return -1;
@ -2015,6 +2015,7 @@ function WSCreateCourse($params) {
$original_course_id_value = $course_param['original_course_id_value']; $original_course_id_value = $course_param['original_course_id_value'];
$orig_course_id_value[] = $course_param['original_course_id_value']; $orig_course_id_value[] = $course_param['original_course_id_value'];
$visibility = null; $visibility = null;
if($course_param['visibility'] && $course_param['visibility'] >= 0 && $course_param['visibility'] <= 3) { if($course_param['visibility'] && $course_param['visibility'] >= 0 && $course_param['visibility'] <= 3) {
$visibility = $course_param['visibility']; $visibility = $course_param['visibility'];
} }
@ -2058,10 +2059,6 @@ function WSCreateCourse($params) {
$course_language = $course_param['course_language']; $course_language = $course_param['course_language'];
} }
$dbnamelength = strlen($_configuration['db_prefix']);
//Ensure the database prefix + database name do not get over 40 characters
$maxlength = 40 - $dbnamelength;
// Set default values // Set default values
if (isset($_user['language']) && $_user['language'] != '') { if (isset($_user['language']) && $_user['language'] != '') {
$values['course_language'] = $_user['language']; $values['course_language'] = $_user['language'];
@ -2071,32 +2068,25 @@ function WSCreateCourse($params) {
$values['tutor_name'] = api_get_person_name($_user['firstName'], $_user['lastName'], null, null, $values['course_language']); $values['tutor_name'] = api_get_person_name($_user['firstName'], $_user['lastName'], null, null, $values['course_language']);
if (trim($wanted_code) == '') { $params = array();
$wanted_code = generate_course_code(substr($title, 0, $maxlength)); $params['title'] = $title;
} $params['wanted_code'] = $wanted_code;
$params['category_code'] = $category_code;
$params['tutor_name'] = $tutor_name;
$params['course_language'] = $course_language;
$params['user_id'] = api_get_user_id();
$params['visibility'] = $visibility;
$keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); $course_info = CourseManager::create_course($params);
$sql_check = sprintf('SELECT * FROM '.$table_course.' WHERE visual_code = "%s"',Database :: escape_string($wanted_code)); if (!empty($course_info)) {
$result_check = Database::query($sql_check); // I don't know why this api function doesn't work... $course_code = $course_info['code'];
if (Database::num_rows($result_check) < 1) {
if (sizeof($keys)) {
$visual_code = $keys['currentCourseCode'];
$code = $keys['currentCourseId'];
$db_name = $keys['currentCourseDbName'];
$directory = $keys['currentCourseRepository'];
$expiration_date = time() + $firstExpirationDelay;
prepare_course_repository($directory, $code);
update_Db_course($db_name);
$pictures_array = fill_course_repository($directory);
fill_Db_course($db_name, $directory, $course_language, $pictures_array);
$return = register_course($code, $visual_code, $directory, $db_name, $tutor_name, $category_code, $title, $course_language, api_get_user_id(), $expiration_date, array(), $visibility);
// Save new fieldlabel into course_field table. // Save new fieldlabel into course_field table
$field_id = CourseManager::create_course_extra_field($original_course_id_name, 1, $original_course_id_name); $field_id = CourseManager::create_course_extra_field($original_course_id_name, 1, $original_course_id_name);
// Save the external system's id into user_field_value table. // Save the external system's id into user_field_value table.
$res = CourseManager::update_course_extra_field_value($code, $original_course_id_name, $original_course_id_value); $res = CourseManager::update_course_extra_field_value($course_code, $original_course_id_name, $original_course_id_value);
if (is_array($extra_list) && count($extra_list) > 0) { if (is_array($extra_list) && count($extra_list) > 0) {
foreach ($extra_list as $extra) { foreach ($extra_list as $extra) {
@ -2105,14 +2095,13 @@ function WSCreateCourse($params) {
// Save new fieldlabel into course_field table. // Save new fieldlabel into course_field table.
$field_id = CourseManager::create_course_extra_field($extra_field_name, 1, $extra_field_name); $field_id = CourseManager::create_course_extra_field($extra_field_name, 1, $extra_field_name);
// Save the external system's id into course_field_value table. // Save the external system's id into course_field_value table.
$res = CourseManager::update_course_extra_field_value($code, $extra_field_name, $extra_field_value); $res = CourseManager::update_course_extra_field_value($course_code, $extra_field_name, $extra_field_value);
}
} }
} }
$results[] = $code; $results[] = $course_code;
continue;
} else { } else {
$results[] = 0; $results[] = 0;
}
continue; continue;
} }

@ -9,8 +9,7 @@ class TestAddCourse extends UnitTestCase {
function TestAddCourse() { function TestAddCourse() {
$this->UnitTestCase('Courses creation - main/inc/lib/add_course.lib.inc.test.php'); $this->UnitTestCase('Courses creation - main/inc/lib/add_course.lib.inc.test.php');
} }
/*
function TestCreateCourse(){ function TestCreateCourse(){
global $_configuration; global $_configuration;
$course_datos = array( $course_datos = array(
@ -29,7 +28,7 @@ class TestAddCourse extends UnitTestCase {
$course_datos['db_prefix'], $course_datos['firstExpirationDelay']); $course_datos['db_prefix'], $course_datos['firstExpirationDelay']);
//should be code string if succeeded (false if failed) //should be code string if succeeded (false if failed)
$this->assertTrue(is_string($res)); $this->assertTrue(is_string($res));
} }*/
function testRegisterCourse() { function testRegisterCourse() {
global $_configuration; global $_configuration;

Loading…
Cancel
Save