|
@@ -531,10 +531,21 @@ class DocumentManager
|
|
|
$added_slash = $path == '/' ? '' : '/';
|
|
|
|
|
|
// Condition for the session
|
|
|
- $current_session_id = api_get_session_id();
|
|
|
- $condition_session = " AND (id_session = '$current_session_id' OR (id_session = '0') )";
|
|
|
-
|
|
|
- $condition_session .= self::getSessionFolderFilters($originalPath, $current_session_id);
|
|
|
+ $sessionId = api_get_session_id();
|
|
|
+ $condition_session = " AND (id_session = '$sessionId' OR (id_session = '0') )";
|
|
|
+ $condition_session .= self::getSessionFolderFilters($originalPath, $sessionId);
|
|
|
+
|
|
|
+ $sharedCondition = null;
|
|
|
+ if ($originalPath == '/shared_folder') {
|
|
|
+ $students = CourseManager::get_user_list_from_course_code($_course['code'], $sessionId);
|
|
|
+ if (!empty($students)) {
|
|
|
+ $conditionList = array();
|
|
|
+ foreach ($students as $studentId => $studentInfo) {
|
|
|
+ $conditionList[] = '/shared_folder/sf_user_' . $studentInfo['user_id'];
|
|
|
+ }
|
|
|
+ $sharedCondition .= ' AND docs.path IN ("' . implode('","', $conditionList) . '")';
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
$sql = "SELECT
|
|
|
docs.id,
|
|
@@ -563,6 +574,7 @@ class DocumentManager
|
|
|
last.visibility
|
|
|
$visibility_bit
|
|
|
$condition_session
|
|
|
+ $sharedCondition
|
|
|
";
|
|
|
$result = Database::query($sql);
|
|
|
|
|
@@ -656,7 +668,7 @@ class DocumentManager
|
|
|
$is_visible = DocumentManager::check_visibility_tree(
|
|
|
$row['id'],
|
|
|
$_course['code'],
|
|
|
- $current_session_id,
|
|
|
+ $sessionId,
|
|
|
api_get_user_id(),
|
|
|
$to_group_id
|
|
|
);
|
|
@@ -694,6 +706,16 @@ class DocumentManager
|
|
|
$to_group_id = intval($to_group_id);
|
|
|
$document_folders = array();
|
|
|
|
|
|
+ $students = CourseManager::get_user_list_from_course_code($_course['code'], api_get_session_id());
|
|
|
+ $sharedCondition = null;
|
|
|
+
|
|
|
+ if (!empty($students)) {
|
|
|
+ $conditionList = array();
|
|
|
+ foreach ($students as $studentId => $studentInfo) {
|
|
|
+ $conditionList[] = '/shared_folder/sf_user_' . $studentInfo['user_id'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if ($can_see_invisible) {
|
|
|
//condition for the session
|
|
|
$session_id = api_get_session_id();
|
|
@@ -715,7 +737,7 @@ class DocumentManager
|
|
|
WHERE
|
|
|
docs.filetype = 'folder' AND
|
|
|
last.to_group_id = " . $to_group_id . " AND
|
|
|
- docs.path NOT LIKE '%shared_folder%' AND
|
|
|
+ docs.path NOT LIKE '%shared_folder%' AND
|
|
|
last.visibility <> 2 $condition_session ";
|
|
|
} else {
|
|
|
$sql = "SELECT DISTINCT docs.id, path
|
|
@@ -739,6 +761,13 @@ class DocumentManager
|
|
|
if (DocumentManager::is_folder_to_avoid($row['path'])) {
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
+ if (strpos($row['path'], '/shared_folder/') !== false) {
|
|
|
+ if (!in_array($row['path'], $conditionList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$document_folders[$row['id']] = $row['path'];
|
|
|
}
|
|
|
|
|
@@ -772,7 +801,7 @@ class DocumentManager
|
|
|
$visibleFolders[$row['id']] = $row['path'];
|
|
|
}
|
|
|
|
|
|
- //condition for the session
|
|
|
+ // Condition for the session
|
|
|
$session_id = api_get_session_id();
|
|
|
$condition_session = api_get_session_condition($session_id);
|
|
|
//get invisible folders
|