From bcd4619f28bb42c158075b12ce2870a69501ec10 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 24 Nov 2011 15:41:52 +0100 Subject: [PATCH] Partial using $params instead variable per variable when creating a new course see #4068 --- main/admin/course_add.php | 40 +++---- main/admin/course_edit.php | 11 +- main/admin/course_import.php | 13 ++- main/create_course/add_course.php | 15 ++- main/inc/lib/add_course.lib.inc.php | 77 +++++++------ main/inc/lib/course.lib.php | 52 ++++----- main/inc/lib/course_request.lib.php | 109 ++++++++---------- main/webservices/registration.soap.php | 95 +++++++-------- .../main/inc/lib/add_course.lib.inc.test.php | 5 +- 9 files changed, 203 insertions(+), 214 deletions(-) diff --git a/main/admin/course_add.php b/main/admin/course_add.php index 4f4192933e..68edae01db 100644 --- a/main/admin/course_add.php +++ b/main/admin/course_add.php @@ -43,7 +43,7 @@ if ($_configuration['multiple_access_urls']) { $res = Database::query($sql); $teachers = array(); -$teachers[0] = '-- '.get_lang('NoManager').' --'; +//$teachers[0] = '-- '.get_lang('NoManager').' --'; while($obj = Database::fetch_object($res)) { $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->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->applyFilter('tutor_id', 'html_filter'); +//$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->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'); $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['unsubscribe'] = 0; reset($teachers); -$values['course_teachers'] = key($teachers); +//$values['course_teachers'] = key($teachers); $form->setDefaults($values); -// Validate the form. +// Validate the form if ($form->validate()) { $course = $form->exportValues(); $code = $course['visual_code']; - $tutor_name = $teachers[$course['tutor_id']]; + //$tutor_name = $teachers[$course['tutor_id']]; $teacher_id = $course['tutor_id']; $course_teachers = $course['course_teachers']; - $test = false; - - // The course tutor has been selected in the teachers list so we must remove him to avoid double records in the database. - foreach ($course_teachers as $key => $value){ - if ($value == $teacher_id) { - unset($course_teachers[$key]); - break; - } - } - $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['exemplary_content'] = empty($course['exemplary_content']) ? false : true; + $course['teachers'] = $course_teachers; + //$course['tutor_name'] = $tutor_name; + $course['user_id'] = $teacher_id; + $course['wanted_code'] = $course['visual_code']; - $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); + $course_info = CourseManager::create_course($course); + header('Location: course_list.php'); exit; } diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php index 0f3bdb603c..600e453dab 100644 --- a/main/admin/course_edit.php +++ b/main/admin/course_edit.php @@ -65,11 +65,11 @@ $teachers = array(); $platform_teachers[0] = '-- '.get_lang('NoManager').' --'; while ($obj = Database::fetch_object($res)) { + if (!array_key_exists($obj->user_id,$course_teachers)) { $teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname); } - if ($course['tutor_name']==$course_teachers[$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','html_filter'); + //$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->applyFilter('tutor_name','html_filter'); +//$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->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size="4" style="width: 150px;"'); $group=array(); -$group[] = FormValidator::createElement('select', 'platform_teachers', '', $teachers, 'id="platform_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: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:300px;"'); $element_template = << diff --git a/main/admin/course_import.php b/main/admin/course_import.php index dae026883d..c43bc34e85 100644 --- a/main/admin/course_import.php +++ b/main/admin/course_import.php @@ -120,8 +120,17 @@ function save_data($courses) { $uidCreator = 1; } - $course_info = CourseManager::create_course($course['Title'], $course['Code'], '', false, - $titular, $course['CourseCategory'], $course_language, $uidCreator); + $params = array(); + $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)) { $msg .= ''.$course_info['title'].' '.get_lang('Created').'
'; } diff --git a/main/create_course/add_course.php b/main/create_course/add_course.php index b85bc9f5af..d9a0b008e5 100644 --- a/main/create_course/add_course.php +++ b/main/create_course/add_course.php @@ -230,9 +230,18 @@ if ($form->validate()) { } if ($course_code_ok) { - if (!$course_validation_feature) { - $course_info = CourseManager::create_course($title, $wanted_code, '', $exemplary_content, - $tutor_name, $category_code, $course_language); + if (!$course_validation_feature) { + + $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)) { $directory = $course_info['directory']; diff --git a/main/inc/lib/add_course.lib.inc.php b/main/inc/lib/add_course.lib.inc.php index f83bc33907..c2280e6fb5 100644 --- a/main/inc/lib/add_course.lib.inc.php +++ b/main/inc/lib/add_course.lib.inc.php @@ -2600,11 +2600,31 @@ function string2binary($variable) { * @param integer Expiration date in unix time representation * @param array Optional array of teachers' user ID * @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, - $tutor_name, $category_code, $course_language, $user_id, $department_name, $department_url, $disk_quota, $subscribe, $unsubscribe, $visibility, $expiration_date, $teachers) { - +function register_course($params) { 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); $TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER); @@ -2612,11 +2632,11 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_ $ok_to_register_course = true; // Check whether all the needed parameters are present. - if (empty($course_sys_code)) { + if (empty($code)) { $error_msg[] = 'courseSysCode is missing'; $ok_to_register_course = false; } - if (empty($course_screen_code)) { + if (empty($visual_code)) { $error_msg[] = 'courseScreenCode is missing'; $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'; //$ok_to_register_course = false; }*/ - if (empty($course_repository)) { + if (empty($directory)) { $error_msg[] = 'courseRepository is missing'; $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; } - if (empty($course_language)) { - $course_language = api_get_setting('platformLanguage'); - } if (empty($expiration_date)) { $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(); - if ($subscribe != '') { - $subscribe = 1; - } - - if ($unsubscribe != '') { - $unsubscribe = 0; - } - if (stripos($department_url, 'http://') === false && stripos($department_url, 'https://') === false) { $department_url = 'http://'.$department_url; } //just in case - if ($department_url = 'http://') { + if ($department_url == 'http://') { $department_url = ''; - } - - if (empty($user_id)) { - $user_id = api_get_user_id(); - } - + } $course_id = 0; if ($ok_to_register_course) { // Here we must add 2 fields. - $sql = "INSERT INTO ".$TABLECOURSE . " SET - code = '".Database :: escape_string($course_sys_code) . "', - directory = '".Database :: escape_string($course_repository) . "', + $sql = "INSERT INTO ".$TABLECOURSE . " SET + code = '".Database :: escape_string($code) . "', + directory = '".Database :: escape_string($directory) . "', course_language = '".Database :: escape_string($course_language) . "', title = '".Database :: escape_string($title) . "', 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) . "', subscribe = '".intval($subscribe) . "', unsubscribe = '".intval($unsubscribe) . "', - visual_code = '".Database :: escape_string($course_screen_code) . "'"; + visual_code = '".Database :: escape_string($visual_code) . "'"; Database::query($sql); $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()); - $i_course_sort = CourseManager :: userCourseSort($user_id, $course_sys_code); + $i_course_sort = CourseManager :: userCourseSort($user_id, $code); $sql = "INSERT INTO ".$TABLECOURSUSER . " SET - course_code = '".Database :: escape_string($course_sys_code). "', + course_code = '".Database :: escape_string($code). "', user_id = '".intval($user_id) . "', status = '1', role = '".lang2db(get_lang('Professor')) . "', @@ -2726,10 +2730,13 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_ user_course_cat = '0'"; Database::query($sql); - if (count($teachers) > 0) { + if (!empty($teachers)) { foreach ($teachers as $key) { + if (empty($key)) { + continue; + } $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) . "', status = '1', role = '', @@ -2748,14 +2755,14 @@ function register_course($title, $course_sys_code, $course_screen_code, $course_ if (api_get_current_access_url_id() != -1) { $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 { - UrlManager::add_course_to_url($course_sys_code, 1); + UrlManager::add_course_to_url($code, 1); } // Add event to the system log. $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'); diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 83a71433e0..301d8622ce 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -116,55 +116,53 @@ $coursesRepositories = $_configuration['root_sys']; */ class CourseManager { + var $columns = array('code', 'directory', 'db_name', ''); + + /** * Creates a course * @param string course title * @param bool add example content or not * @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, - $tutor_name = '', $category_code = '', $course_language = '', $user_id = '', - $department_name = '', $department_url = '', $disk_quota = '', - $subscribe = '', $unsubscribe = '', $visibility = '', $expiration_date = '', $teacher_list = array() - ) { + function create_course($params) { global $_configuration; - - if (empty($title)) { + + if (empty($params['title'])) { return false; } - if (empty($wanted_code)) { - $wanted_code = $title; + if (empty($params['wanted_code'])) { + $params['wanted_code'] = $params['title']; // Check whether the requested course code has already been occupied. $dbnamelength = strlen($_configuration['db_prefix']); // Ensure the database prefix + database name do not get over 40 characters. $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 - $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)) { - $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)) { - $course_id = register_course($title, $current_course_id, $current_course_code, $current_course_repository, - $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_id = register_course($params); + $course_info = api_get_course_info_by_id($course_id); - if (!empty($course_info)) { - return $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; } } } diff --git a/main/inc/lib/course_request.lib.php b/main/inc/lib/course_request.lib.php index 12d16bed89..27fd3427dd 100644 --- a/main/inc/lib/course_request.lib.php +++ b/main/inc/lib/course_request.lib.php @@ -77,13 +77,13 @@ class CourseRequestManager { if (!is_array($user_info)) { return false; } + $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language); $request_date = api_get_utc_datetime(); $status = COURSE_REQUEST_PENDING; $info = 0; - - $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); + $keys = define_course_keys($wanted_code, ''); if (!count($keys)) { return false; } @@ -218,7 +218,7 @@ class CourseRequestManager { if (self::course_code_exists($wanted_code)) { return false; } - $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); + $keys = define_course_keys($wanted_code, ''); if (count($keys)) { $visual_code = $keys['currentCourseCode']; $code = $keys['currentCourseId']; @@ -337,75 +337,64 @@ class CourseRequestManager { } // Make all the checks again before the new course creation. - - $wanted_code = $course_request_info['code']; if (CourseManager::course_code_exists($wanted_code)) { 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']; if ($user_id <= 0) { return false; } + $user_info = api_get_user_info($user_id); if (!is_array($user_info)) { return false; } - $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language); - - // Create the requested course. - - $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); - if (!count($keys)) { - return false; + + // Create the requested course + $params = array(); + + $params['title'] = $course_request_info['title']; + $params['category_code'] = $course_request_info['category_code']; + $params['course_language'] = $course_request_info['course_language']; + $params['exemplary_content'] = intval($course_request_info['exemplary_content']) > 0; + $params['wanted_code'] = $course_request_info['code']; + $params['user_id'] = $course_request_info['user_id']; + $params['tutor_name'] = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language); + + $course_info = CourseManager::create_course($params); + if (!empty($course_info)) { + + // Mark the request as accepted. + $sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id; + Database::query($sql); + + // E-mail notification. + + // E-mail language: The platform language seems to be the best choice + $email_language = api_get_setting('platformLanguage'); + + $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 .= 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, $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 .= 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('Phone', null, $email_language).': '.api_get_setting('administratorTelephone')."\n"; + $email_body .= get_lang('Email', null, $email_language).': '.api_get_setting('emailAdministrator', null, $email_language)."\n"; + $email_body .= "\n".get_lang('CourseRequestLegalNote', null, $email_language)."\n"; + + $sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS); + $sender_email = get_setting('emailAdministrator'); + $recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, PERSON_NAME_EMAIL_ADDRESS); + $recipient_email = $user_info['mail']; + $extra_headers = 'Bcc: '.$sender_email; + + @api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email); + return $course_info['code']; } - $visual_code = $keys['currentCourseCode']; - $code = $keys['currentCourseId']; - $db_name = $keys['currentCourseDbName']; - $directory = $keys['currentCourseRepository']; - prepare_course_repository($directory, $code); - update_Db_course($db_name); - $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. - $sql = "UPDATE ".Database :: get_main_table(TABLE_MAIN_COURSE_REQUEST)." SET status = ".COURSE_REQUEST_ACCEPTED." WHERE id = ".$id; - Database::query($sql); - - // E-mail notification. - - // 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_subject = sprintf(get_lang('CourseRequestAcceptedEmailSubject', null, $email_language), '['.api_get_setting('siteName').']', $wanted_code); - - $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 .= sprintf(get_lang('CourseRequestAcceptedEmailText', null, $email_language), $wanted_code, $code, api_get_path(WEB_COURSE_PATH).$directory.'/')."\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 .= get_lang('Manager', null, $email_language).' '.api_get_setting('siteName')."\n"; - $email_body .= get_lang('Phone', null, $email_language).': '.api_get_setting('administratorTelephone')."\n"; - $email_body .= get_lang('Email', null, $email_language).': '.api_get_setting('emailAdministrator', null, $email_language)."\n"; - $email_body .= "\n".get_lang('CourseRequestLegalNote', null, $email_language)."\n"; - - $sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS); - $sender_email = get_setting('emailAdministrator'); - $recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, PERSON_NAME_EMAIL_ADDRESS); - $recipient_email = $user_info['mail']; - $extra_headers = 'Bcc: '.$sender_email; - - @api_mail($recipient_name, $recipient_email, $email_subject, $email_body, $sender_name, $sender_email); - - return $code; + return false; } /** diff --git a/main/webservices/registration.soap.php b/main/webservices/registration.soap.php index 91dcc2599f..07a6a6a1b3 100644 --- a/main/webservices/registration.soap.php +++ b/main/webservices/registration.soap.php @@ -1989,7 +1989,7 @@ $server->register('WSCreateCourse', // method name // Define the method WSCreateCourse function WSCreateCourse($params) { - global $firstExpirationDelay, $_configuration; + global $_configuration; if(!WSHelperVerifyKey($params)) { return -1; @@ -2006,15 +2006,16 @@ function WSCreateCourse($params) { foreach ($courses_params as $course_param) { - $title = $course_param['title']; - $category_code = $course_param['category_code']; - $wanted_code = $course_param['wanted_code']; - $tutor_name = $course_param['tutor_name']; - $course_language = 'english'; // TODO: A hard-coded value. - $original_course_id_name = $course_param['original_course_id_name']; - $original_course_id_value = $course_param['original_course_id_value']; - $orig_course_id_value[] = $course_param['original_course_id_value']; - $visibility = null; + $title = $course_param['title']; + $category_code = $course_param['category_code']; + $wanted_code = $course_param['wanted_code']; + $tutor_name = $course_param['tutor_name']; + $course_language = 'english'; // TODO: A hard-coded value. + $original_course_id_name = $course_param['original_course_id_name']; + $original_course_id_value = $course_param['original_course_id_value']; + $orig_course_id_value[] = $course_param['original_course_id_value']; + $visibility = null; + if($course_param['visibility'] && $course_param['visibility'] >= 0 && $course_param['visibility'] <= 3) { $visibility = $course_param['visibility']; } @@ -2058,10 +2059,6 @@ function WSCreateCourse($params) { $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 if (isset($_user['language']) && $_user['language'] != '') { $values['course_language'] = $_user['language']; @@ -2070,51 +2067,43 @@ function WSCreateCourse($params) { } $values['tutor_name'] = api_get_person_name($_user['firstName'], $_user['lastName'], null, null, $values['course_language']); + + $params = array(); + $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; + + $course_info = CourseManager::create_course($params); + + if (!empty($course_info)) { + $course_code = $course_info['code']; + + // Save new fieldlabel into course_field table + $field_id = CourseManager::create_course_extra_field($original_course_id_name, 1, $original_course_id_name); - if (trim($wanted_code) == '') { - $wanted_code = generate_course_code(substr($title, 0, $maxlength)); - } - - $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); - - $sql_check = sprintf('SELECT * FROM '.$table_course.' WHERE visual_code = "%s"',Database :: escape_string($wanted_code)); - $result_check = Database::query($sql_check); // I don't know why this api function doesn't work... - 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. - $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. - $res = CourseManager::update_course_extra_field_value($code, $original_course_id_name, $original_course_id_value); + // Save the external system's id into user_field_value table. + $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) { - foreach ($extra_list as $extra) { - $extra_field_name = $extra['field_name']; - $extra_field_value = $extra['field_value']; - // Save new fieldlabel into course_field table. - $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. - $res = CourseManager::update_course_extra_field_value($code, $extra_field_name, $extra_field_value); - } + if (is_array($extra_list) && count($extra_list) > 0) { + foreach ($extra_list as $extra) { + $extra_field_name = $extra['field_name']; + $extra_field_value = $extra['field_value']; + // Save new fieldlabel into course_field table. + $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. + $res = CourseManager::update_course_extra_field_value($course_code, $extra_field_name, $extra_field_value); } } - $results[] = $code; - continue; + $results[] = $course_code; } else { - $results[] = 0; - continue; + $results[] = 0; } + continue; + } } // end principal foreach diff --git a/tests/main/inc/lib/add_course.lib.inc.test.php b/tests/main/inc/lib/add_course.lib.inc.test.php index 1fdd39f503..17dd02f060 100755 --- a/tests/main/inc/lib/add_course.lib.inc.test.php +++ b/tests/main/inc/lib/add_course.lib.inc.test.php @@ -9,8 +9,7 @@ class TestAddCourse extends UnitTestCase { function TestAddCourse() { $this->UnitTestCase('Courses creation - main/inc/lib/add_course.lib.inc.test.php'); } - - +/* function TestCreateCourse(){ global $_configuration; $course_datos = array( @@ -29,7 +28,7 @@ class TestAddCourse extends UnitTestCase { $course_datos['db_prefix'], $course_datos['firstExpirationDelay']); //should be code string if succeeded (false if failed) $this->assertTrue(is_string($res)); - } + }*/ function testRegisterCourse() { global $_configuration;