diff --git a/main/create_course/add_course.php b/main/create_course/add_course.php index a8f7b832fa..fd42d3ad5a 100755 --- a/main/create_course/add_course.php +++ b/main/create_course/add_course.php @@ -256,7 +256,7 @@ if ($form->validate()) { // Create a request for a new course. - $request_id = CourseRequestManager::create_course_request($wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience); + $request_id = CourseRequestManager::create_course_request($wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience, api_get_user_id()); if ($request_id) { diff --git a/main/inc/lib/course_request.lib.php b/main/inc/lib/course_request.lib.php index 60fa8f3d59..dbc07e2fc3 100644 --- a/main/inc/lib/course_request.lib.php +++ b/main/inc/lib/course_request.lib.php @@ -47,9 +47,10 @@ class CourseRequestManager { * @param string $course_language * @param string $objetives * @param string $target_audience + * @param int/string $user_id * @return int/bool The database id of the newly created course request or FALSE on failure. */ - public static function create_course_request($wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience) { + public static function create_course_request($wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience, $user_id) { $wanted_code = Database::escape_string($wanted_code); $title = Database::escape_string($title); @@ -58,8 +59,12 @@ class CourseRequestManager { $course_language = Database::escape_string($course_language); $objetives = Database::escape_string($objetives); $target_audience = Database::escape_string($target_audience); + $user_id = (int)$user_id; + + if (self::course_code_exists($wanted_code)) { + return false; + } - $user_id = api_get_user_id(); if ($user_id <= 0) { return false; } @@ -72,6 +77,7 @@ class CourseRequestManager { $request_date = api_get_utc_datetime(); $status = COURSE_REQUEST_PENDING; + $info = 0; $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); if (!count($keys)) { @@ -86,16 +92,16 @@ class CourseRequestManager { code, user_id, directory, db_name, course_language, title, description, category_code, tutor_name, visual_code, request_date, - objetives, target_audience, status) + objetives, target_audience, status, info) VALUES ( - "%s","%s","%s","%s", - "%s","%s","%s","%s", - "%s","%s","%s", - "%s","%s","%s");', Database::get_main_table(TABLE_MAIN_COURSE_REQUEST), + "%s", "%s", "%s", "%s", + "%s", "%s", "%s", "%s", + "%s", "%s", "%s", + "%s", "%s", "%s", "%s");', Database::get_main_table(TABLE_MAIN_COURSE_REQUEST), $code, $user_id, $directory, $db_name, $course_language, $title, $description, $category_code, $tutor_name, $visual_code, $request_date, - $objetives, $target_audience, $status); + $objetives, $target_audience, $status, $info); $result_sql = Database::query($sql); if (!$result_sql) { @@ -160,10 +166,101 @@ class CourseRequestManager { } + /** + * Updates a given course request in the database. + * @param int/string $id The id (an integer number) of the corresponding database record. + * @param string $wanted_code The code for the created in the future course. + * @param string $title + * @param string $description + * @param string $category_code + * @param string $course_language + * @param string $objetives + * @param string $target_audience + * @param int/string $user_id + * @return bool Returns TRUE on success or FALSE on failure. + */ + public static function update_course_request($id, $wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience, $user_id) { + + $id = (int)$id; + $wanted_code = Database::escape_string($wanted_code); + $title = Database::escape_string($title); + $description = Database::escape_string($description); + $category_code = Database::escape_string($category_code); + $course_language = Database::escape_string($course_language); + $objetives = Database::escape_string($objetives); + $target_audience = Database::escape_string($target_audience); + $user_id = (int)$user_id; + + if ($user_id <= 0) { + return false; + } + + // Retrieve request's data + $course_request_info = self::get_course_request_info($id); + if (!is_array($course_request_info)) { + return false; + } + + $code = $wanted_code; + $tutor_name = $course_request_info['tutor_name']; + $directory = $course_request_info['directory']; + $db_name = $course_request_info['db_name']; + $visual_code = $course_request_info['visual_code']; + $request_date = $course_request_info['request_date']; + $status = $course_request_info['status']; + $info = $course_request_info['info']; + + if ($wanted_code != $course_request_info['code']) { + if (self::course_code_exists($wanted_code)) { + return false; + } + $keys = define_course_keys($wanted_code, '', $_configuration['db_prefix']); + if (count($keys)) { + $visual_code = $keys['currentCourseCode']; + $code = $keys['currentCourseId']; + $db_name = $keys['currentCourseDbName']; + $directory = $keys['currentCourseRepository']; + } else { + return false; + } + } + + if ($user_id != $course_request_info['code']) { + $user_info = api_get_user_info($user_id); + if (is_array($user_info)) { + $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language); + } else { + $user_id = $course_request_info['code']; + } + } + + if ($course_language != $course_request_info['course_language']) { + $user_info = api_get_user_info($user_id); + if (is_array($user_info)) { + $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language); + } + } + + $sql = sprintf('UPDATE %s SET + code = %s, user_id = %s, directory = %s, db_name = %s, + course_language = %s, title = %s, description = %s, category_code = %s, + tutor_name = %s, visual_code = %s, request_date = %s, + objetives = %s, target_audience = %s, status = %s, info = %s + WHERE id = '.$id, Database::get_main_table(TABLE_MAIN_COURSE_REQUEST), + $code, $user_id, $directory, $db_name, + $course_language, $title, $description, $category_code, + $tutor_name, $visual_code, $request_date, + $objetives, $target_audience, $status, $info); + $result_sql = Database::query($sql); + + return $result_sql !== false; + + } + /** * Deletes a given course request. - * @param int/string $id The id (an integer number) of the corresponding database record. - * @return array/bool Returns TRUE on success or FALSE on failure. + * @param int/string $id The id (an integer number) of the corresponding database record. + * @return bool Returns TRUE on success or FALSE on failure. */ public static function delete_course_request($id) { $id = (int)$id; @@ -223,7 +320,7 @@ class CourseRequestManager { /** * Accepts a given by its id course request. The requested course gets created immediately after the request acceptance. * @param int/string $id The id (an integer number) of the corresponding database record. - * @return array/bool Returns the code of the newly created course or FALSE on failure. + * @return string/bool Returns the code of the newly created course or FALSE on failure. */ public static function accept_course_request($id) { @@ -309,8 +406,8 @@ class CourseRequestManager { /** * Rejects a given course request. - * @param int/string $id The id (an integer number) of the corresponding database record. - * @return array/bool Returns TRUE on success or FALSE on failure. + * @param int/string $id The id (an integer number) of the corresponding database record. + * @return bool Returns TRUE on success or FALSE on failure. */ public static function reject_course_request($id) { @@ -371,8 +468,8 @@ class CourseRequestManager { /** * Asks the author (through e-mail) for additional information about the given course request. - * @param int/string $id The database primary id of the given request. - * @return array/bool Returns TRUE on success or FALSE on failure. + * @param int/string $id The database primary id of the given request. + * @return bool Returns TRUE on success or FALSE on failure. */ public static function ask_for_additional_info($id) { @@ -441,8 +538,8 @@ class CourseRequestManager { /** * Checks whether additional information about the given course request has been asked. - * @param int/string $id The database primary id of the given request. - * @return array/bool Returns TRUE if additional information has been asked or FALSE otherwise. + * @param int/string $id The database primary id of the given request. + * @return bool Returns TRUE if additional information has been asked or FALSE otherwise. */ public static function additional_info_asked($id) { $id = (int)$id;