Эх сурвалжийг харах

Feature #2099 - Coding the page for editition training requests (6).

Ivan Tcholakov 14 жил өмнө
parent
commit
0180fb9e57

+ 1 - 1
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) {
 

+ 114 - 17
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;