Browse Source

Fix fatal error see BT#10936

jmontoya 9 years ago
parent
commit
db12470781

+ 3 - 2
main/inc/lib/api.lib.php

@@ -6870,12 +6870,13 @@ function api_is_global_chat_enabled()
  * @param int $group_id
  * @param array $courseInfo
  */
-function api_set_default_visibility($item_id, $tool_id, $group_id = 0, $courseInfo = array(), $sessionId = null)
+function api_set_default_visibility($item_id, $tool_id, $group_id = 0, $courseInfo = array(), $sessionId = 0, $userId = 0)
 {
     $courseInfo = empty($courseInfo) ? api_get_course_info() : $courseInfo;
     $courseId = $courseInfo['real_id'];
     $courseCode = $courseInfo['code'];
     $sessionId = empty($sessionId) ? api_get_session_id() : $sessionId;
+    $userId = empty($userId) ? api_get_user_id() : $userId;
 
     $original_tool_id = $tool_id;
 
@@ -6924,7 +6925,7 @@ function api_set_default_visibility($item_id, $tool_id, $group_id = 0, $courseIn
             $original_tool_id,
             $item_id,
             $visibility,
-            api_get_user_id(),
+            $userId,
             $group_id,
             null,
             null,

+ 7 - 7
main/inc/lib/fileUpload.lib.php

@@ -1201,6 +1201,8 @@ function filter_extension(&$filename)
  * @param bool $save_visibility
  * @param int $group_id
  * @param int $session_id Session ID, if any
+ * @param int $userId creator id
+ * 
  * @return int id if inserted document
  */
 function add_document(
@@ -1213,13 +1215,11 @@ function add_document(
     $readonly = 0,
     $save_visibility = true,
     $group_id = null,
-    $session_id = 0
+    $session_id = 0,
+    $userId = 0
 ) {
-    $session_id = intval($session_id);
-
-    if (empty($session_id)) {
-        $session_id = api_get_session_id();
-    }
+    $session_id = empty($session_id) ? api_get_session_id() : $session_id;
+    $userId = empty($userId) ? api_get_user_id() : $userId;
 
     $readonly = intval($readonly);
     $c_id = $_course['real_id'];
@@ -1241,7 +1241,7 @@ function add_document(
         Database::query($sql);
 
         if ($save_visibility) {
-            api_set_default_visibility($documentId, TOOL_DOCUMENT, $group_id, $_course);
+            api_set_default_visibility($documentId, TOOL_DOCUMENT, $group_id, $_course, $session_id, $userId);
         }
 
         return $documentId;

+ 37 - 18
main/newscorm/learnpath.class.php

@@ -233,7 +233,6 @@ class learnpath
 
             $sql = "UPDATE $lp_table SET id = iid WHERE iid = ".$this->lp_view_id;
             Database::query($sql);
-
         }
 
         // Initialise items.
@@ -484,6 +483,8 @@ class learnpath
      * @param string $description
      * @param int $prerequisites
      * @param int $max_time_allowed
+     * @param int $userId
+     *
      * @return int
      */
     public function add_item(
@@ -494,7 +495,8 @@ class learnpath
         $title,
         $description,
         $prerequisites = 0,
-        $max_time_allowed = 0
+        $max_time_allowed = 0,
+        $userId = 0
     ) {
         $course_id = $this->course_info['real_id'];
         if ($this->debug > 0) {
@@ -505,6 +507,8 @@ class learnpath
             $this->course_info = api_get_course_info($this->cc);
             $course_id = $this->course_info['real_id'];
         }
+        $userId = empty($userId) ? api_get_user_id() : $userId;
+        $sessionId = api_get_session_id();
         $tbl_lp_item = Database :: get_course_table(TABLE_LP_ITEM);
         $_course = $this->course_info;
         $parent = intval($parent);
@@ -658,31 +662,37 @@ class learnpath
                         '/audio',
                         'folder',
                         0,
-                        'audio'
+                        'audio',
+                        '',
+                        0,
+                        true,
+                        null,
+                        $sessionId,
+                        $userId
                     );
                     api_item_property_update(
                         $_course,
                         TOOL_DOCUMENT,
                         $audio_id,
                         'FolderCreated',
-                        api_get_user_id(),
+                        $userId,
                         null,
                         null,
                         null,
                         null,
-                        api_get_session_id()
+                        $sessionId
                     );
                     api_item_property_update(
                         $_course,
                         TOOL_DOCUMENT,
                         $audio_id,
                         'invisible',
-                        api_get_user_id(),
+                        $userId,
                         null,
                         null,
                         null,
                         null,
-                        api_get_session_id()
+                        $sessionId
                     );
                 }
 
@@ -691,7 +701,7 @@ class learnpath
                     $_FILES['mp3'],
                     api_get_path(SYS_COURSE_PATH) . $_course['path'] . '/document',
                     '/audio',
-                    api_get_user_id(),
+                    $userId,
                     '',
                     '',
                     '',
@@ -733,7 +743,8 @@ class learnpath
         $zipname = '',
         $publicated_on = '',
         $expired_on = '',
-        $categoryId = 0
+        $categoryId = 0,
+        $userId = 0
     ) {
         global $charset;
 
@@ -755,6 +766,8 @@ class learnpath
         // Session id.
         $session_id = api_get_session_id();
 
+        $userId = empty($userId) ? api_get_user_id() : $userId;
+
         $check_name = "SELECT * FROM $tbl_lp
                        WHERE c_id = $course_id AND name = '$name'";
 
@@ -861,9 +874,9 @@ class learnpath
                         TOOL_LEARNPATH,
                         $id,
                         'LearnpathAdded',
-                        api_get_user_id()
+                        $userId
                     );
-                    api_set_default_visibility($id, TOOL_LEARNPATH, 0, $courseInfo);
+                    api_set_default_visibility($id, TOOL_LEARNPATH, 0, $courseInfo, $session_id, $userId);
                     return $id;
                 }
                 break;
@@ -5942,16 +5955,19 @@ class learnpath
      * @param string $content
      * @param string $title
      * @param string $extension
+     * @param int $userId creator id
      *
      * @return string
      */
-    public function create_document($courseInfo, $content = '', $title = '', $extension = 'html')
+    public function create_document($courseInfo, $content = '', $title = '', $extension = 'html', $userId = 0)
     {
         if (!empty($courseInfo)) {
             $course_id = $courseInfo['real_id'];
         } else {
             $course_id = api_get_course_int_id();
         }
+        $userId = empty($userId) ? api_get_user_id() : $userId;
+        $sessionId = api_get_session_id();
 
         global $charset;
         $postDir = isset($_POST['dir']) ? $_POST['dir'] : '';
@@ -5994,11 +6010,8 @@ class learnpath
         }
 
         $title = disable_dangerous_file($title);
-
         $filename = $title;
-
         $content = !empty($content) ? $content : $_POST['content_lp'];
-
         $tmp_filename = $filename;
 
         $i = 0;
@@ -6053,7 +6066,13 @@ class learnpath
                     $save_file_path,
                     'file',
                     $file_size,
-                    $tmp_filename
+                    $tmp_filename,
+                    '',
+                    0, //readonly
+                    true,
+                    null,
+                    $sessionId,
+                    $userId
                 );
 
                 if ($document_id) {
@@ -6062,12 +6081,12 @@ class learnpath
                         TOOL_DOCUMENT,
                         $document_id,
                         'DocumentAdded',
-                        api_get_user_id(),
+                        $userId,
                         null,
                         null,
                         null,
                         null,
-                        api_get_session_id()
+                        $sessionId
                     );
 
                     $new_comment = (isset($_POST['comment'])) ? trim($_POST['comment']) : '';

+ 21 - 3
main/webservices/lp.php

@@ -592,6 +592,7 @@ function WSCreateLp($params)
         }
     }
 
+    $userId = 1;
     $courseId = $courseInfo['real_id'];
     $courseCode = $courseInfo['code'];
 
@@ -611,8 +612,22 @@ function WSCreateLp($params)
             return 'Session not found';
         }
     }*/
+    if ($debug) {
+        error_log('add_lp');
+    }
+    $lpId = learnpath::add_lp(
+        $courseCode,
+        $lpName,
+        '',
+        'chamilo',
+        'manual',
+        '',
+        '',
+        '',
+        0,
+        $userId
+    );
 
-    $lpId = learnpath::add_lp($courseCode, $lpName, '', 'chamilo', 'manual');
     if ($lpId) {
         if ($debug) {
             error_log('LP created');
@@ -630,7 +645,8 @@ function WSCreateLp($params)
                 $courseInfo,
                 $data,
                 $info['filename'],
-                $extension
+                $extension,
+                $userId
             );
 
             if ($documentId) {
@@ -644,7 +660,9 @@ function WSCreateLp($params)
                         $documentId,
                         $lpItem['title'],
                         '',
-                        ''
+                        '',
+                        0,
+                        $userId
                     );
 
                     $previousId = $itemId;