Browse Source

Merge with 1.10.x

jmontoyaa 9 years ago
parent
commit
77774e8cb4
4 changed files with 112 additions and 47 deletions
  1. 3 2
      main/inc/lib/api.lib.php
  2. 14 12
      main/inc/lib/fileUpload.lib.php
  3. 70 30
      main/newscorm/learnpath.class.php
  4. 25 3
      main/webservices/lp.php

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

@@ -6881,12 +6881,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;
 
@@ -6935,7 +6936,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,

+ 14 - 12
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;
@@ -1489,7 +1489,7 @@ function create_unexisting_directory(
         $to_group_id
     );
 
-    if ($folderExists == true) {
+    if ($folderExists === true) {
         if ($generateNewNameIfExists) {
             $counter = 1;
             while (1) {
@@ -1500,7 +1500,7 @@ function create_unexisting_directory(
                     $to_group_id
                 );
 
-                if ($folderExists == false) {
+                if ($folderExists === false) {
                     break;
                 }
                 $counter++;
@@ -1529,7 +1529,7 @@ function create_unexisting_directory(
 
     if (!is_dir($base_work_dir.$systemFolderName)) {
         $result = mkdir(
-            $base_work_dir.$systemFolderName,
+            $base_work_dir . $systemFolderName,
             api_get_permissions_for_new_directories(),
             true
         );
@@ -1548,7 +1548,7 @@ function create_unexisting_directory(
 
             $rs = Database::query($sql);
             if (Database::num_rows($rs) == 0) {
-
+        
                 $document_id = add_document(
                     $_course,
                     $systemFolderName,
@@ -1558,7 +1558,9 @@ function create_unexisting_directory(
                     null,
                     0,
                     true,
-                    $to_group_id
+                    $to_group_id,
+                    $session_id,
+                    $user_id
                 );
 
                 if ($document_id) {

+ 70 - 30
main/newscorm/learnpath.class.php

@@ -266,7 +266,9 @@ class learnpath
                             error_log(
                                 'New LP - learnpath::__construct() - ' .
                                 'aicc object with id ' . $my_item_id .
-                                ' set in items[]', 0);
+                                ' set in items[]',
+                                0
+                            );
                         }
                     }
                     break;
@@ -482,6 +484,8 @@ class learnpath
      * @param string $description
      * @param int $prerequisites
      * @param int $max_time_allowed
+     * @param int $userId
+     *
      * @return int
      */
     public function add_item(
@@ -492,7 +496,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) {
@@ -503,6 +508,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);
@@ -656,31 +663,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
                     );
                 }
 
@@ -689,7 +702,7 @@ class learnpath
                     $_FILES['mp3'],
                     api_get_path(SYS_COURSE_PATH) . $_course['path'] . '/document',
                     '/audio',
-                    api_get_user_id(),
+                    $userId,
                     '',
                     '',
                     '',
@@ -731,7 +744,8 @@ class learnpath
         $zipname = '',
         $publicated_on = '',
         $expired_on = '',
-        $categoryId = 0
+        $categoryId = 0,
+        $userId = 0
     ) {
         global $charset;
 
@@ -753,6 +767,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'";
 
@@ -859,9 +875,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;
@@ -5576,15 +5592,18 @@ class learnpath
 
             $title_cut = cut($arrLP[$i]['title'], 25);
 
-            $url = api_get_self() . '?'.api_get_cidreq().'&action=view_item&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id;
-            $title_cut = Display::url(
-                $title_cut,
-                $url,
-                array(
-                    'class' => 'moved',
-                    'data-title' => $title_cut
-                )
-            );
+            // Link for the documents
+            if ($arrLP[$i]['item_type'] == 'document') {
+                $url = api_get_self() . '?'.api_get_cidreq().'&action=view_item&mode=preview_document&id=' . $arrLP[$i]['id'] . '&lp_id=' . $this->lp_id;
+                $title_cut = Display::url(
+                    $title_cut,
+                    $url,
+                    array(
+                            'class' => 'ajax moved',
+                        'data-title' => $title_cut
+                    )
+                );
+            }
 
             if (($i % 2) == 0) {
                 $oddClass = 'row_odd';
@@ -5898,18 +5917,22 @@ class learnpath
     /**
      * Creates the default learning path folder
      * @param array $course
+     * @param int $creatorId
+     *
      * @return bool
      */
-    public static function generate_learning_path_folder($course)
+    public static function generate_learning_path_folder($course, $creatorId = 0)
     {
         // Creating learning_path folder
         $dir = '/learning_path';
         $filepath = api_get_path(SYS_COURSE_PATH).$course['path'] . '/document';
+        $creatorId = empty($creatorId) ? api_get_user_id() : $creatorId;
+
         $folder = false;
         if (!is_dir($filepath.'/'.$dir)) {
             $folderData = create_unexisting_directory(
                 $course,
-                api_get_user_id(),
+                $creatorId,
                 api_get_session_id(),
                 0,
                 0,
@@ -5924,15 +5947,18 @@ class learnpath
         } else {
             $folder = true;
         }
+
         return $folder;
     }
 
     /**
      * @param array $course
      * @param string $lp_name
+     * @param int $creatorId
+     *
      * @return array
      */
-    public function generate_lp_folder($course, $lp_name = null)
+    public function generate_lp_folder($course, $lp_name = '', $creatorId = 0)
     {
         $filepath = '';
         $dir = '/learning_path/';
@@ -5940,8 +5966,11 @@ class learnpath
         if (empty($lp_name)) {
             $lp_name = $this->name;
         }
+        $creatorId = empty($creatorId) ? api_get_user_id() : $creatorId;
 
-        $folder = self::generate_learning_path_folder($course);
+        $folder = self::generate_learning_path_folder($course, $creatorId);
+        // Creating LP folder
+        if ($folder) {
         // Limits title size
         $title = api_substr(api_replace_dangerous_char($lp_name), 0 , 80);
         $dir = $dir.$title;
@@ -5954,7 +5983,7 @@ class learnpath
             if (!is_dir($filepath.'/'.$dir)) {
                 $folderData = create_unexisting_directory(
                     $course,
-                    api_get_user_id(),
+                    $creatorId,
                     0,
                     0,
                     0,
@@ -5998,10 +6027,11 @@ class learnpath
      * @param string $title
      * @param string $extension
      * @param int $parentId
+     * @param int $creatorId creator id
      *
      * @return string
      */
-    public function create_document($courseInfo, $content = '', $title = '', $extension = 'html', $parentId = 0)
+    public function create_document($courseInfo, $content = '', $title = '', $extension = 'html', $parentId = 0, $creatorId = 0)
     {
         if (!empty($courseInfo)) {
             $course_id = $courseInfo['real_id'];
@@ -6009,6 +6039,10 @@ class learnpath
             $course_id = api_get_course_int_id();
         }
 
+       $creatorId = empty($creatorId) ? api_get_user_id() : $creatorId;
+       $sessionId = api_get_session_id();
+
+
         //$dir = '/';
         // Generates folder
         $result = $this->generate_lp_folder($courseInfo);
@@ -6112,7 +6146,13 @@ class learnpath
                     $save_file_path,
                     'file',
                     $file_size,
-                    $tmp_filename
+                    $tmp_filename,
+                    '',
+                    0, //readonly
+                    true,
+                    null,
+                    $sessionId,
+                    $creatorId
                 );
 
                 if ($document_id) {
@@ -6121,15 +6161,15 @@ class learnpath
                         TOOL_DOCUMENT,
                         $document_id,
                         'DocumentAdded',
-                        api_get_user_id(),
+                        $creatorId,
                         null,
                         null,
                         null,
                         null,
-                        api_get_session_id()
+                        $sessionId
                     );
 
-                    $new_comment = (isset($_POST['comment'])) ? trim($_POST['comment']) : '';
+                    $new_comment = isset($_POST['comment']) ? trim($_POST['comment']) : '';
                     $new_title = $originalTitle;
 
                     if ($new_comment || $new_title) {

+ 25 - 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');
@@ -626,11 +641,16 @@ function WSCreateLp($params)
             $extension = $info['extension'];
             $data = base64_decode($lpItem['data']);
 
+            if ($debug) {
+                error_log('create_document: '.$info['filename']);
+            }
+
             $documentId = $lp->create_document(
                 $courseInfo,
                 $data,
                 $info['filename'],
-                $extension
+                $extension,
+                $userId
             );
 
             if ($documentId) {
@@ -644,7 +664,9 @@ function WSCreateLp($params)
                         $documentId,
                         $lpItem['title'],
                         '',
-                        ''
+                        '',
+                        0,
+                        $userId
                     );
 
                     $previousId = $itemId;