From dada35ea041cef4c597e449d4d50d743dda62fec Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Fri, 16 Sep 2016 13:39:59 +0200 Subject: [PATCH] When using "post_group_id" use the group.iid --- main/inc/lib/groupmanager.lib.php | 10 ++-- main/work/work.lib.php | 89 ++++++++++++++++++++++--------- 2 files changed, 71 insertions(+), 28 deletions(-) diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php index 10c829dea3..4de7a63f89 100755 --- a/main/inc/lib/groupmanager.lib.php +++ b/main/inc/lib/groupmanager.lib.php @@ -1021,7 +1021,9 @@ class GroupManager FROM $group_user_table g INNER JOIN $user_table u ON (u.user_id = g.user_id) - WHERE c_id = $courseId AND g.group_id = $group_id"; + WHERE + c_id = $courseId AND + g.group_id = $group_id"; if (!empty($column) && !empty($direction)) { $column = Database::escape_string($column, null, false); @@ -1638,11 +1640,11 @@ class GroupManager */ public static function unsubscribe_all_users($groupId) { - $courseId = api_get_course_int_id(); + $course_id = api_get_course_int_id(); //api_is_element_in_the_session(TOOL_GROUP, $group_ids[$i]) $groupId = (int) $groupId; - if (empty($courseId) || empty($groupId)) { + if (empty($course_id) || empty($groupId)) { return false; } @@ -1650,7 +1652,7 @@ class GroupManager $sql = "DELETE FROM $table_group_user WHERE group_id = $groupId AND - c_id = $courseId"; + c_id = $course_id"; $result = Database::query($sql); return $result; diff --git a/main/work/work.lib.php b/main/work/work.lib.php index e0a93a717a..c0f498d2b0 100755 --- a/main/work/work.lib.php +++ b/main/work/work.lib.php @@ -271,6 +271,12 @@ function getWorkList($id, $my_folder_data, $add_in_where_query = null) $session_id = api_get_session_id(); $condition_session = api_get_session_condition($session_id); $group_id = api_get_group_id(); + + $groupInfo = GroupManager::get_group_properties($group_id); + $groupIid = 0; + if ($groupInfo) { + $groupIid = $groupInfo['iid']; + } $is_allowed_to_edit = api_is_allowed_to_edit(null, true); $linkInfo = GradebookUtils::isResourceInCourseGradebook( @@ -305,17 +311,17 @@ function getWorkList($id, $my_folder_data, $add_in_where_query = null) $condition_session AND $active_condition AND (parent_id = 0) - $contains_file_query AND - post_group_id = '".$group_id."' + $contains_file_query AND + post_group_id = $groupIid ORDER BY sent_date DESC"; } else { if (!empty($group_id)) { // set to select only messages posted by the user's group - $group_query = " WHERE c_id = $course_id AND post_group_id = '".$group_id."' "; - $subdirs_query = "AND parent_id = 0"; + $group_query = " WHERE c_id = $course_id AND post_group_id = '".$groupIid."' "; + $subdirs_query = " AND parent_id = 0"; } else { - $group_query = " WHERE c_id = $course_id AND post_group_id = '0' "; - $subdirs_query = "AND parent_id = 0"; + $group_query = " WHERE c_id = $course_id AND (post_group_id = '0' OR post_group_id is NULL) "; + $subdirs_query = " AND parent_id = 0"; } //@todo how we can active or not an assignment? $active_condition = ' AND active IN (1, 0)'; @@ -370,7 +376,7 @@ function getWorkPerUser($userId) /** * @param int $workId - * @param int $groupId + * @param int $groupId iid * @param int $course_id * @param int $sessionId * @return mixed @@ -388,12 +394,12 @@ function getUniqueStudentAttemptsTotal($workId, $groupId, $course_id, $sessionId $sql = "SELECT count(DISTINCT u.user_id) FROM $work_table w INNER JOIN $user_table u - ON w.user_id = u.user_id + ON w.user_id = u.user_id WHERE w.c_id = $course_id $sessionCondition AND - w.parent_id = ".$workId." AND - w.post_group_id = ".$groupId." AND + w.parent_id = $workId AND + w.post_group_id = $groupId AND w.active IN (0, 1) "; @@ -437,6 +443,12 @@ function getUniqueStudentAttempts( $sessionId = intval($sessionId); $groupId = intval($groupId); + $groupInfo = GroupManager::get_group_properties($groupId); + $groupIid = 0; + if ($groupInfo) { + $groupIid = $groupInfo['iid']; + } + $studentCondition = null; if (!empty($onlyUserList)) { @@ -454,13 +466,13 @@ function getUniqueStudentAttempts( SELECT count(*), w.parent_id FROM $work_table w INNER JOIN $user_table u - ON w.user_id = u.user_id + ON w.user_id = u.user_id WHERE w.filetype = 'file' AND w.c_id = $course_id $sessionCondition AND $workCondition - w.post_group_id = ".$groupId." AND + w.post_group_id = $groupIid AND w.active IN (0, 1) $studentCondition "; if (!empty($userId)) { @@ -1174,9 +1186,9 @@ function get_work_id($path) */ function get_count_work($work_id, $onlyMeUserId = null, $notMeUserId = null) { - $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); - $iprop_table = Database::get_course_table(TABLE_ITEM_PROPERTY); - $user_table = Database::get_main_table(TABLE_MAIN_USER); + $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); + $iprop_table = Database::get_course_table(TABLE_ITEM_PROPERTY); + $user_table = Database::get_main_table(TABLE_MAIN_USER); $is_allowed_to_edit = api_is_allowed_to_edit(null, true); $session_id = api_get_session_id(); @@ -1187,11 +1199,17 @@ function get_count_work($work_id, $onlyMeUserId = null, $notMeUserId = null) $course_id = $course_info['real_id']; $work_id = intval($work_id); + $groupInfo = GroupManager::get_group_properties($group_id); + $groupIid = 0; + if ($groupInfo) { + $groupIid = $groupInfo['iid']; + } + if (!empty($group_id)) { // set to select only messages posted by the user's group - $extra_conditions = " work.post_group_id = '".intval($group_id)."' "; + $extra_conditions = " work.post_group_id = '".intval($groupIid)."' "; } else { - $extra_conditions = " work.post_group_id = '0' "; + $extra_conditions = " (work.post_group_id = '0' or work.post_group_id IS NULL) "; } if ($is_allowed_to_edit) { @@ -1227,7 +1245,8 @@ function get_count_work($work_id, $onlyMeUserId = null, $notMeUserId = null) prop.visibility <> 2 AND work.c_id = $course_id ) - INNER JOIN $user_table u ON (work.user_id = u.user_id) + INNER JOIN $user_table u + ON (work.user_id = u.user_id) WHERE $extra_conditions $where_condition $condition_session"; $result = Database::query($sql); @@ -1264,6 +1283,13 @@ function getWorkListStudent( $session_id = api_get_session_id(); $condition_session = api_get_session_condition($session_id); $group_id = api_get_group_id(); + + $groupInfo = GroupManager::get_group_properties($group_id); + $groupIid = 0; + if ($groupInfo) { + $groupIid = $groupInfo['iid']; + } + $userId = api_get_user_id(); $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( @@ -1285,7 +1311,7 @@ function getWorkListStudent( // Get list from database if (!empty($group_id)) { - $group_query = " WHERE w.c_id = $course_id AND post_group_id = '".$group_id."' "; + $group_query = " WHERE w.c_id = $course_id AND post_group_id = '".$groupIid."' "; $subdirs_query = "AND parent_id = 0"; } else { $group_query = " WHERE w.c_id = $course_id AND (post_group_id = '0' or post_group_id is NULL) "; @@ -1476,7 +1502,7 @@ function getWorkListTeacher( $countUniqueAttempts = getUniqueStudentAttemptsTotal( $workId, - $group_id, + $groupIid, $course_id, $session_id ); @@ -1796,6 +1822,13 @@ function get_work_user_list( $session_id = api_get_session_id(); $group_id = api_get_group_id(); + + $groupInfo = GroupManager::get_group_properties($group_id); + $groupIid = 0; + if ($groupInfo) { + $groupIid = $groupInfo['iid']; + } + $course_info = api_get_course_info(); $course_id = $course_info['real_id']; @@ -1820,7 +1853,7 @@ function get_work_user_list( if (!empty($work_data)) { if (!empty($group_id)) { - $extra_conditions = " work.post_group_id = '".intval($group_id)."' "; + $extra_conditions = " work.post_group_id = '".intval($groupIid)."' "; // set to select only messages posted by the user's group } else { $extra_conditions = " (work.post_group_id = '0' OR work.post_group_id is NULL) "; @@ -1865,8 +1898,9 @@ function get_work_user_list( } $user_condition = "INNER JOIN $user_table u ON (work.user_id = u.user_id) "; - $work_condition = "$iprop_table prop INNER JOIN $work_table work - ON (prop.ref = work.id AND prop.c_id = $course_id AND work.c_id = $course_id ) "; + $work_condition = "$iprop_table prop + INNER JOIN $work_table work + ON (prop.ref = work.id AND prop.c_id = $course_id AND work.c_id = $course_id) "; $work_assignment = get_work_assignment_by_id($work_id); @@ -4312,13 +4346,20 @@ function generateMoveForm($item_id, $path, $courseInfo, $groupId, $sessionId) $session_id = intval($sessionId); $groupId = intval($groupId); $sessionCondition = empty($sessionId) ? " AND (session_id = 0 OR session_id IS NULL) " : " AND session_id='".$session_id."'"; + + $groupInfo = GroupManager::get_group_properties($group_id); + $groupIid = 0; + if ($groupInfo) { + $groupIid = $groupInfo['iid']; + } + $sql = "SELECT id, url, title FROM $work_table WHERE c_id = $courseId AND active IN (0, 1) AND url LIKE '/%' AND - post_group_id = $groupId + post_group_id = $groupIid $sessionCondition"; $res = Database::query($sql); while ($folder = Database::fetch_array($res)) {