Browse Source

Fix bad condition that sets all documents to invisible see BT#9255

Julio Montoya 10 years ago
parent
commit
b6b54d5bc2
2 changed files with 26 additions and 16 deletions
  1. 23 15
      main/inc/lib/document.lib.php
  2. 3 1
      main/inc/lib/main_api.lib.php

+ 23 - 15
main/inc/lib/document.lib.php

@@ -1646,10 +1646,15 @@ class DocumentManager
                 $course_info['code'],
                 $session_id
             );
+
             if (in_array($user_status, array('0', '2', '6'))) {
                 //is true if is an student, course session teacher or coach
                 $user_in_course = true;
             }
+
+            if (api_is_platform_admin()) {
+                $user_in_course = true;
+            }
         }
 
         // 4. Checking document visibility (i'm repeating the code in order to be more clear when reading ) - jm
@@ -1657,7 +1662,6 @@ class DocumentManager
         if ($user_in_course) {
 
             // 4.1 Checking document visibility for a Course
-
             if ($session_id == 0) {
                 $item_info = api_get_item_property_info($course_info['real_id'], 'document', $doc_id, 0);
 
@@ -1678,6 +1682,7 @@ class DocumentManager
                     $doc_id,
                     0
                 );
+
                 $item_info_in_session = api_get_item_property_info(
                     $course_info['real_id'],
                     'document',
@@ -1928,16 +1933,16 @@ class DocumentManager
 
     /**
      * Create directory certificate
-     * @param string $course_id The course code
+     * @param string $courseCode
      * @return void()
      */
-    public static function create_directory_certificate_in_course($course_id)
+    public static function create_directory_certificate_in_course($courseCode)
     {
-        $course_info = api_get_course_info($course_id);
-        if (!empty($course_info)) {
+        $courseInfo = api_get_course_info($courseCode);
+        if (!empty($courseInfo)) {
             $to_group_id = 0;
             $to_user_id = null;
-            $course_dir = $course_info['path'] . "/document/";
+            $course_dir = $courseInfo['path'] . "/document/";
             $sys_course_path = api_get_path(SYS_COURSE_PATH);
             $base_work_dir = $sys_course_path . $course_dir;
             $base_work_dir_test = $base_work_dir . 'certificates';
@@ -1947,7 +1952,7 @@ class DocumentManager
 
             if (!is_dir($base_work_dir_test)) {
                 create_unexisting_directory(
-                    $course_info,
+                    $courseInfo,
                     api_get_user_id(),
                     api_get_session_id(),
                     $to_group_id,
@@ -1956,14 +1961,17 @@ class DocumentManager
                     $dir_name,
                     $post_dir_name
                 );
-                $update_id = self::get_document_id_of_directory_certificate();
-                api_item_property_update(
-                    $course_info,
-                    TOOL_DOCUMENT,
-                    $update_id,
-                    $visibility_command,
-                    api_get_user_id()
-                );
+                $id = self::get_document_id_of_directory_certificate();
+
+                if (!empty($id)) {
+                    api_item_property_update(
+                        $courseInfo,
+                        TOOL_DOCUMENT,
+                        $id,
+                        $visibility_command,
+                        api_get_user_id()
+                    );
+                }
             }
         }
     }

+ 3 - 1
main/inc/lib/main_api.lib.php

@@ -3391,7 +3391,8 @@ function api_item_property_update(
 
     $filter = " c_id = $course_id AND tool='$tool' AND ref='$item_id' $condition_session ";
 
-    if ($item_id == '*') {
+    // @deprecated this call '*'
+    if ($item_id === '*') {
         // For all (not deleted) items of the tool
         $filter = " c_id = $course_id  AND tool = '$tool' AND visibility<>'2' $condition_session";
     }
@@ -3498,6 +3499,7 @@ function api_item_property_update(
                             tool = '$tool' AND
                             ref = '$item_id' AND
                             id_session = '$session_id'";
+
                 $rs = Database::query($sql);
                 if (Database::num_rows($rs) > 0) {
                     $sql = "UPDATE $TABLE_ITEMPROPERTY