From b6b54d5bc2ed8638e623f306d71b23f54f59e4b7 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Tue, 17 Mar 2015 09:25:47 +0100 Subject: [PATCH] Fix bad condition that sets all documents to invisible see BT#9255 --- main/inc/lib/document.lib.php | 38 +++++++++++++++++++++-------------- main/inc/lib/main_api.lib.php | 4 +++- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/main/inc/lib/document.lib.php b/main/inc/lib/document.lib.php index 4e41d88e80..f8e5c0d0cb 100755 --- a/main/inc/lib/document.lib.php +++ b/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() + ); + } } } } diff --git a/main/inc/lib/main_api.lib.php b/main/inc/lib/main_api.lib.php index f553fbd51c..1601ef05e9 100755 --- a/main/inc/lib/main_api.lib.php +++ b/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