Use c_group_info.iid

pull/2487/head
jmontoyaa 9 years ago
parent 7106cf6a6b
commit bda418d60f
  1. 2
      main/calendar/agenda.php
  2. 4
      main/document/document.php
  3. 2
      main/forum/editthread.php
  4. 11
      main/forum/viewforum.php
  5. 2
      main/group/group_edit.php
  6. 1
      main/group/member_settings.php
  7. 9
      main/inc/lib/agenda.lib.php
  8. 5
      main/inc/lib/api.lib.php
  9. 3
      main/inc/lib/attendance.lib.php
  10. 7
      main/inc/lib/course.lib.php
  11. 179
      main/inc/lib/groupmanager.lib.php
  12. 4
      main/work/student_work.php
  13. 3
      main/work/work.lib.php
  14. 4
      main/work/work_list_all.php
  15. 2
      main/work/work_list_others.php
  16. 4
      main/work/work_missing.php
  17. 9
      tests/main/inc/lib/groupmanager.lib.test.php

@ -110,7 +110,7 @@ if (api_is_allowed_to_edit(false, true) ||
(api_get_course_setting('allow_user_edit_agenda') && (api_get_course_setting('allow_user_edit_agenda') &&
!api_is_anonymous() && !api_is_anonymous() &&
api_is_allowed_to_session_edit(false, true)) || api_is_allowed_to_session_edit(false, true)) ||
GroupManager::user_has_access(api_get_user_id(), $group_id, GroupManager::GROUP_TOOL_CALENDAR) && GroupManager::user_has_access(api_get_user_id(), $groupInfo['iid'], GroupManager::GROUP_TOOL_CALENDAR) &&
GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid']) GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid'])
) { ) {
switch ($action) { switch ($action) {

@ -1533,7 +1533,7 @@ if (isset($_GET['keyword']) && !empty($_GET['keyword'])) {
if ($groupId != 0) { if ($groupId != 0) {
$userAccess = GroupManager::user_has_access( $userAccess = GroupManager::user_has_access(
api_get_user_id(), api_get_user_id(),
$groupId, $groupIid,
GroupManager::GROUP_TOOL_DOCUMENTS GroupManager::GROUP_TOOL_DOCUMENTS
); );
if ($userAccess) { if ($userAccess) {
@ -1714,7 +1714,7 @@ if (isset($documentAndFolders) && is_array($documentAndFolders)) {
if ($groupId == 0 || if ($groupId == 0 ||
GroupManager::user_has_access( GroupManager::user_has_access(
$userId, $userId,
$groupId, $groupIid,
GroupManager::GROUP_TOOL_DOCUMENTS GroupManager::GROUP_TOOL_DOCUMENTS
) )
) { ) {

@ -80,7 +80,7 @@ if (!api_is_allowed_to_edit(false, true) &&
api_not_allowed(); api_not_allowed();
} }
// 4. anonymous posts are not allowed and the user is not logged in // 4. anonymous posts are not allowed and the user is not logged in
if (!$_user['user_id'] AND $currentForum['allow_anonymous'] <> 1) { if (!$_user['user_id'] && $currentForum['allow_anonymous'] <> 1) {
api_not_allowed(); api_not_allowed();
} }

@ -82,8 +82,15 @@ if (!empty($groupId)) {
//Group info & group category info //Group info & group category info
$group_properties = GroupManager::get_group_properties($groupId); $group_properties = GroupManager::get_group_properties($groupId);
//User has access in the group? //User has access in the group?
$user_has_access_in_group = GroupManager::user_has_access($userId, $groupId, GroupManager::GROUP_TOOL_FORUM); $user_has_access_in_group = GroupManager::user_has_access(
$is_group_tutor = GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties['iid']); $userId,
$group_properties['iid'],
GroupManager::GROUP_TOOL_FORUM
);
$is_group_tutor = GroupManager::is_tutor_of_group(
api_get_user_id(),
$group_properties['iid']
);
// Course // Course
if ( if (

@ -333,7 +333,7 @@ if ($form->validate()) {
// Storing the users (we first remove all users and then add only those who were selected) // Storing the users (we first remove all users and then add only those who were selected)
GroupManager :: unsubscribe_all_users($current_group['iid']); GroupManager :: unsubscribe_all_users($current_group['iid']);
if (isset ($_POST['group_members']) && count($_POST['group_members']) > 0) { if (isset($_POST['group_members']) && count($_POST['group_members']) > 0) {
GroupManager :: subscribe_users($values['group_members'], $current_group['iid']); GroupManager :: subscribe_users($values['group_members'], $current_group['iid']);
} }

@ -134,7 +134,6 @@ if ($subscribedTutors) {
$subscribedTutors = array_column($subscribedTutors, 'user_id'); $subscribedTutors = array_column($subscribedTutors, 'user_id');
} }
$orderUserListByOfficialCode = api_get_setting('order_user_list_by_official_code'); $orderUserListByOfficialCode = api_get_setting('order_user_list_by_official_code');
$possible_users = array(); $possible_users = array();
$userGroup = new UserGroup(); $userGroup = new UserGroup();

@ -2572,6 +2572,7 @@ class Agenda
{ {
$courseInfo = api_get_course_info(); $courseInfo = api_get_course_info();
$groupInfo = GroupManager::get_group_properties(api_get_group_id()); $groupInfo = GroupManager::get_group_properties(api_get_group_id());
$groupIid = isset($groupInfo['iid']) ? $groupInfo['iid'] : 0;
$actionsLeft = ''; $actionsLeft = '';
$actionsLeft .= "<a href='".api_get_path(WEB_CODE_PATH)."calendar/agenda_js.php?type={$this->type}'>". $actionsLeft .= "<a href='".api_get_path(WEB_CODE_PATH)."calendar/agenda_js.php?type={$this->type}'>".
@ -2589,8 +2590,8 @@ class Agenda
if (api_is_allowed_to_edit(false, true) || if (api_is_allowed_to_edit(false, true) ||
(api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous()) && api_is_allowed_to_session_edit(false, true) || (api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous()) && api_is_allowed_to_session_edit(false, true) ||
(GroupManager::user_has_access(api_get_user_id(), api_get_group_id(), GroupManager::GROUP_TOOL_CALENDAR) && (GroupManager::user_has_access(api_get_user_id(), $groupIid, GroupManager::GROUP_TOOL_CALENDAR) &&
isset($groupInfo['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid'])) GroupManager::is_tutor_of_group(api_get_user_id(), $groupIid))
) { ) {
$actionsLeft .= Display::url( $actionsLeft .= Display::url(
Display::return_icon('new_event.png', get_lang('AgendaAdd'), '', ICON_SIZE_MEDIUM), Display::return_icon('new_event.png', get_lang('AgendaAdd'), '', ICON_SIZE_MEDIUM),
@ -2633,7 +2634,6 @@ class Agenda
if ($this->type == 'personal') { if ($this->type == 'personal') {
$form = null; $form = null;
if (!isset($_GET['action'])) { if (!isset($_GET['action'])) {
$form = new FormValidator( $form = new FormValidator(
'form-search', 'form-search',
'get', 'get',
@ -2654,9 +2654,6 @@ class Agenda
$sessions, $sessions,
['id' => 'session_id', 'onchange' => 'submit();'] ['id' => 'session_id', 'onchange' => 'submit();']
); );
//$form->addButtonFilter(get_lang('Filter'));
//$renderer = $form->defaultRenderer();
//$renderer->setCustomElementTemplate('<div class="col-md-6">{element}</div>');
$form->addButtonReset(get_lang('Reset')); $form->addButtonReset(get_lang('Reset'));
$form = $form->returnForm(); $form = $form->returnForm();

@ -7964,11 +7964,12 @@ function api_protect_course_group($tool, $showHeader = true)
{ {
$userId = api_get_user_id(); $userId = api_get_user_id();
$groupId = api_get_group_id(); $groupId = api_get_group_id();
$groupInfo = GroupManager::get_group_properties($groupId);
if (!empty($groupId)) { if (!empty($groupInfo)) {
$allow = GroupManager::user_has_access( $allow = GroupManager::user_has_access(
$userId, $userId,
$groupId, $groupInfo['iid'],
$tool $tool
); );

@ -642,7 +642,8 @@ class Attendance
} }
if (!empty($groupId)) { if (!empty($groupId)) {
$students = GroupManager::getStudents($groupId); $groupInfo = GroupManager::get_group_properties($groupId);
$students = GroupManager::getStudents($groupInfo['iid']);
if (!empty($students)) { if (!empty($students)) {
foreach ($students as $student) { foreach ($students as $student) {
$studentInGroup[$student['user_id']] = true; $studentInGroup[$student['user_id']] = true;

@ -2251,8 +2251,11 @@ class CourseManager
// Cleaning groups // Cleaning groups
$groups = GroupManager::get_groups($courseId); $groups = GroupManager::get_groups($courseId);
if (!empty($groups)) { if (!empty($groups)) {
$groupList = array_column($groups, 'id'); $groupList = array_column($groups, 'iid');
GroupManager::delete_groups($groupList, $course['code']); foreach ($groupList as $groupId) {
GroupManager::delete_groups($groupId, $course['code']);
}
} }
// Cleaning c_x tables // Cleaning c_x tables

@ -369,12 +369,11 @@ class GroupManager
* @author Christophe Gesche <christophe.gesche@claroline.net> * @author Christophe Gesche <christophe.gesche@claroline.net>
* @author Hugues Peeters <hugues.peeters@claroline.net> * @author Hugues Peeters <hugues.peeters@claroline.net>
* @author Bart Mollet * @author Bart Mollet
* @param mixed $groupIdList - group(s) to delete. It can be a single id * @param int $groupId iid
* (int) or a list of id (array).
* @param string $course_code Default is current course * @param string $course_code Default is current course
* @return integer - number of groups deleted. * @return integer - number of groups deleted.
*/ */
public static function delete_groups($group_ids, $course_code = null) public static function delete_groups($groupId, $course_code = null)
{ {
$course_info = api_get_course_info($course_code); $course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
@ -382,32 +381,15 @@ class GroupManager
// Database table definitions // Database table definitions
$group_table = Database:: get_course_table(TABLE_GROUP); $group_table = Database:: get_course_table(TABLE_GROUP);
$forum_table = Database:: get_course_table(TABLE_FORUM); $forum_table = Database:: get_course_table(TABLE_FORUM);
$groupId = (int) $groupId;
$group_ids = is_array($group_ids) ? $group_ids : array ($group_ids);
$group_ids = array_map('intval', $group_ids);
if (api_is_course_coach()) {
//a coach can only delete courses from his session
for ($i = 0; $i < count($group_ids); $i++) {
if (!api_is_element_in_the_session(TOOL_GROUP, $group_ids[$i])) {
array_splice($group_ids, $i, 1);
$i--;
}
}
if (count($group_ids) == 0) {
return 0;
}
}
$sql = "SELECT id, iid, secret_directory, session_id $sql = "SELECT id, iid, secret_directory, session_id
FROM $group_table FROM $group_table
WHERE c_id = $course_id AND id IN (".implode(' , ', $group_ids).")"; WHERE c_id = $course_id AND iid = $groupId";
$db_result = Database::query($sql); $db_result = Database::query($sql);
while ($group = Database::fetch_object($db_result)) { $group = Database::fetch_object($db_result);
$groupId = $group->iid; if ($group) {
// Unsubscribe all users // Unsubscribe all users
self::unsubscribe_all_users($groupId); self::unsubscribe_all_users($groupId);
self::unsubscribe_all_tutors($groupId); self::unsubscribe_all_tutors($groupId);
@ -421,7 +403,7 @@ class GroupManager
DocumentManager::delete_document($course_info, $group->secret_directory, $source_directory); DocumentManager::delete_document($course_info, $group->secret_directory, $source_directory);
if (file_exists($source_directory)) { if (file_exists($source_directory)) {
if (api_get_setting('permanently_remove_deleted_files') == 'true') { if (api_get_setting('permanently_remove_deleted_files') === 'true') {
// Delete // Delete
my_delete($source_directory); my_delete($source_directory);
} else { } else {
@ -457,16 +439,21 @@ class GroupManager
* name, tutor_id, description, maximum_number_of_students, * name, tutor_id, description, maximum_number_of_students,
* directory and visibility of tools * directory and visibility of tools
*/ */
public static function get_group_properties($group_id) public static function get_group_properties($group_id, $useIid = false)
{ {
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
if (empty($group_id) or !is_integer(intval($group_id))) { if (empty($group_id) || !is_integer(intval($group_id))) {
return null; return null;
} }
$table_group = Database :: get_course_table(TABLE_GROUP); $table_group = Database :: get_course_table(TABLE_GROUP);
$sql = "SELECT * FROM $table_group $sql = "SELECT * FROM $table_group
WHERE c_id = $course_id AND id = ".intval($group_id); WHERE c_id = $course_id AND id = ".intval($group_id);
if ($useIid) {
$sql = "SELECT * FROM $table_group
WHERE c_id = $course_id AND iid = ".intval($group_id);
}
$db_result = Database::query($sql); $db_result = Database::query($sql);
$db_object = Database::fetch_object($db_result); $db_object = Database::fetch_object($db_result);
@ -736,6 +723,8 @@ class GroupManager
$table_group = Database:: get_course_table(TABLE_GROUP); $table_group = Database:: get_course_table(TABLE_GROUP);
$table_group_cat = Database:: get_course_table(TABLE_GROUP_CATEGORY); $table_group_cat = Database:: get_course_table(TABLE_GROUP_CATEGORY);
$group_id = intval($group_id);
if (empty($group_id)) { if (empty($group_id)) {
return array(); return array();
} }
@ -747,7 +736,6 @@ class GroupManager
} }
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
$group_id = intval($group_id);
$sql = "SELECT gc.* FROM $table_group_cat gc, $table_group g $sql = "SELECT gc.* FROM $table_group_cat gc, $table_group g
WHERE WHERE
gc.c_id = $course_id AND gc.c_id = $course_id AND
@ -777,15 +765,13 @@ class GroupManager
$table_group = Database:: get_course_table(TABLE_GROUP); $table_group = Database:: get_course_table(TABLE_GROUP);
$table_group_cat = Database:: get_course_table(TABLE_GROUP_CATEGORY); $table_group_cat = Database:: get_course_table(TABLE_GROUP_CATEGORY);
$cat_id = intval($cat_id); $cat_id = intval($cat_id);
$sql = "SELECT id FROM $table_group $sql = "SELECT iid FROM $table_group
WHERE c_id = $course_id AND category_id='".$cat_id."'"; WHERE c_id = $course_id AND category_id='".$cat_id."'";
$res = Database::query($sql); $res = Database::query($sql);
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {
$groups_to_delete = array();
while ($group = Database::fetch_object($res)) { while ($group = Database::fetch_object($res)) {
$groups_to_delete[] = $group->id; self::delete_groups($group->iid, $course_code);
} }
self::delete_groups($groups_to_delete, $course_code);
} }
$sql = "DELETE FROM $table_group_cat $sql = "DELETE FROM $table_group_cat
WHERE c_id = $course_id AND id='".$cat_id."'"; WHERE c_id = $course_id AND id='".$cat_id."'";
@ -956,7 +942,7 @@ class GroupManager
FROM '.$group_user_table.' gu, '.$group_table.' g FROM '.$group_user_table.' gu, '.$group_table.' g
WHERE g.c_id = '.$course_info['real_id'].' WHERE g.c_id = '.$course_info['real_id'].'
AND gu.c_id = g.c_id AND gu.c_id = g.c_id
AND gu.group_id = g.id '; AND gu.group_id = g.iid ';
if ($category_id != null) { if ($category_id != null) {
$category_id = intval($category_id); $category_id = intval($category_id);
$sql .= ' AND g.category_id = '.$category_id; $sql .= ' AND g.category_id = '.$category_id;
@ -1119,7 +1105,7 @@ class GroupManager
/** /**
* Get only students from a group (not tutors) * Get only students from a group (not tutors)
* @param int $group_id * @param int $group_id iid
* @return array * @return array
*/ */
public static function getStudents($group_id) public static function getStudents($group_id)
@ -1195,13 +1181,13 @@ class GroupManager
$groupId = (int) $groupId; $groupId = (int) $groupId;
$category = self::get_category_from_group($groupId); $category = self::get_category_from_group($groupId);
$groups_per_user = (isset($category['groups_per_user']) ? $category['groups_per_user'] : self::GROUP_PER_MEMBER_NO_LIMIT); $groups_per_user = isset($category['groups_per_user']) ? $category['groups_per_user'] : self::GROUP_PER_MEMBER_NO_LIMIT;
$group_table = Database:: get_course_table(TABLE_GROUP); $group_table = Database:: get_course_table(TABLE_GROUP);
$group_user_table = Database:: get_course_table(TABLE_GROUP_USER); $group_user_table = Database:: get_course_table(TABLE_GROUP_USER);
$session_id = api_get_session_id(); $session_id = api_get_session_id();
$complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['code'], true, $session_id); $complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['code'], true, $session_id);
$number_groups_per_user = ($groups_per_user == self::GROUP_PER_MEMBER_NO_LIMIT ? self::INFINITE : $groups_per_user); $number_groups_per_user = $groups_per_user == self::GROUP_PER_MEMBER_NO_LIMIT ? self::INFINITE : $groups_per_user;
/* /*
* Retrieve all the groups where enrollment is still allowed * Retrieve all the groups where enrollment is still allowed
@ -1209,7 +1195,7 @@ class GroupManager
*/ */
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT g.id gid, g.iid g.max_student-count(ug.user_id) nbPlaces, g.max_student $sql = "SELECT g.id gid, g.iid, g.max_student-count(ug.user_id) nbPlaces, g.max_student
FROM $group_table g FROM $group_table g
LEFT JOIN $group_user_table ug ON LEFT JOIN $group_user_table ug ON
g.c_id = $course_id AND g.c_id = $course_id AND
@ -1240,11 +1226,13 @@ class GroupManager
$complete_user_list[$i]['number_groups_left'] = $number_groups_per_user - $number_of_groups; $complete_user_list[$i]['number_groups_left'] = $number_groups_per_user - $number_of_groups;
} }
//first sort by user_id to filter out duplicates //first sort by user_id to filter out duplicates
$complete_user_list = TableSort :: sort_table($complete_user_list, 'user_id'); $complete_user_list = TableSort :: sort_table($complete_user_list, 'user_id');
$complete_user_list = self :: filter_duplicates($complete_user_list, 'user_id'); $complete_user_list = self :: filter_duplicates($complete_user_list, 'user_id');
$complete_user_list = self :: filter_only_students($complete_user_list); $complete_user_list = self :: filter_only_students($complete_user_list);
//now sort by # of group left //now sort by # of group left
$complete_user_list = TableSort :: sort_table($complete_user_list, 'number_groups_left', SORT_DESC); $complete_user_list = TableSort :: sort_table($complete_user_list, 'number_groups_left', SORT_DESC);
$userToken = array (); $userToken = array ();
@ -1342,10 +1330,11 @@ class GroupManager
$sql = "SELECT COUNT(*) AS number_of_groups $sql = "SELECT COUNT(*) AS number_of_groups
FROM $table_group_user gu, $table_group g FROM $table_group_user gu, $table_group g
WHERE WHERE
gu.c_id = $course_id AND gu.c_id = $course_id AND
g.c_id = $course_id AND g.c_id = $course_id AND
gu.user_id = $user_id AND gu.user_id = $user_id AND
g.id = gu.group_id $cat_condition"; g.iid = gu.group_id
$cat_condition";
$result = Database::query($sql); $result = Database::query($sql);
$db_object = Database::fetch_object($result); $db_object = Database::fetch_object($result);
@ -1393,14 +1382,14 @@ class GroupManager
$table_group = Database :: get_course_table(TABLE_GROUP); $table_group = Database :: get_course_table(TABLE_GROUP);
$group_id = intval($group_id); $group_id = intval($group_id);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$db_result = Database::query(
'SELECT self_unregistration_allowed $sql = "SELECT self_unregistration_allowed
FROM '.$table_group.' FROM $table_group
WHERE c_id = '.$course_id.' AND iid = '.$group_id WHERE c_id = $course_id AND iid = $group_id";
); $db_result = Database::query($sql);
$db_object = Database::fetch_object($db_result); $db_object = Database::fetch_object($db_result);
return $db_object->self_unregistration_allowed == 1 && self :: can_user_unsubscribe($user_id, $group_id); return $db_object->self_unregistration_allowed == 1 && self :: is_subscribed($user_id, $group_id);
} }
/** /**
@ -1411,13 +1400,14 @@ class GroupManager
*/ */
public static function is_subscribed($user_id, $group_id) public static function is_subscribed($user_id, $group_id)
{ {
if (empty($user_id) || empty($group_id)) { $course_id = api_get_course_int_id();
if (empty($user_id) || empty($group_id) || empty($course_id)) {
return false; return false;
} }
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER); $table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
$group_id = intval($group_id); $group_id = intval($group_id);
$user_id = intval($user_id); $user_id = intval($user_id);
$course_id = api_get_course_int_id();
$sql = "SELECT 1 FROM $table_group_user $sql = "SELECT 1 FROM $table_group_user
WHERE WHERE
c_id = $course_id AND c_id = $course_id AND
@ -1473,20 +1463,6 @@ class GroupManager
return true; return true;
} }
/**
* Can a user unsubscribe to a specified group in a course
* @param int $user_id
* @param int $group_id iid
* @return bool TRUE if given user can be unsubscribed from given group
* @internal for now, same as GroupManager::is_subscribed($user_id,$group_id)
*/
public static function can_user_unsubscribe($user_id, $group_id)
{
$result = self :: is_subscribed($user_id, $group_id);
return $result;
}
/** /**
* Get all subscribed users (members) from a group * Get all subscribed users (members) from a group
* @param int $group_id (iid) * @param int $group_id (iid)
@ -1835,7 +1811,7 @@ class GroupManager
/** /**
* Check if a user has access to a certain group tool * Check if a user has access to a certain group tool
* @param int $user_id The user id * @param int $user_id The user id
* @param int $group_id The group id * @param int $group_id The group iid
* @param string $tool The tool to check the access rights. This should be * @param string $tool The tool to check the access rights. This should be
* one of constants: GROUP_TOOL_DOCUMENTS * one of constants: GROUP_TOOL_DOCUMENTS
* @return bool True if the given user has access to the given tool in the * @return bool True if the given user has access to the given tool in the
@ -1854,25 +1830,25 @@ class GroupManager
} }
switch ($tool) { switch ($tool) {
case self::GROUP_TOOL_FORUM : case self::GROUP_TOOL_FORUM:
$key = 'forum_state'; $key = 'forum_state';
break; break;
case self::GROUP_TOOL_DOCUMENTS : case self::GROUP_TOOL_DOCUMENTS:
$key = 'doc_state'; $key = 'doc_state';
break; break;
case self::GROUP_TOOL_CALENDAR : case self::GROUP_TOOL_CALENDAR:
$key = 'calendar_state'; $key = 'calendar_state';
break; break;
case self::GROUP_TOOL_ANNOUNCEMENT : case self::GROUP_TOOL_ANNOUNCEMENT:
$key = 'announcements_state'; $key = 'announcements_state';
break; break;
case self::GROUP_TOOL_WORK : case self::GROUP_TOOL_WORK:
$key = 'work_state'; $key = 'work_state';
break; break;
case self::GROUP_TOOL_WIKI : case self::GROUP_TOOL_WIKI:
$key = 'wiki_state'; $key = 'wiki_state';
break; break;
case self::GROUP_TOOL_CHAT : case self::GROUP_TOOL_CHAT:
$key = 'chat_state'; $key = 'chat_state';
break; break;
default: default:
@ -1880,7 +1856,7 @@ class GroupManager
} }
// Check group properties // Check group properties
$groupInfo = self::get_group_properties($group_id); $groupInfo = self::get_group_properties($group_id, true);
if (empty($groupInfo)) { if (empty($groupInfo)) {
return false; return false;
@ -1939,8 +1915,8 @@ class GroupManager
return true; return true;
} }
$groupId = $groupInfo['id']; $groupId = $groupInfo['iid'];
$tutors = self::get_subscribed_tutors($groupInfo['iid'], true); $tutors = self::get_subscribed_tutors($groupId, true);
if (in_array($userId, $tutors)) { if (in_array($userId, $tutors)) {
return true; return true;
@ -1983,8 +1959,9 @@ class GroupManager
$user_id = intval($user_id); $user_id = intval($user_id);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$sql = "SELECT name $sql = "SELECT name
FROM $table_group g INNER JOIN $table_group_user gu FROM $table_group g
ON (gu.group_id=g.id) INNER JOIN $table_group_user gu
ON (gu.group_id = g.iid)
WHERE WHERE
gu.c_id= $course_id AND gu.c_id= $course_id AND
g.c_id= $course_id AND g.c_id= $course_id AND
@ -2012,9 +1989,9 @@ class GroupManager
$sql = "SELECT DISTINCT g.* $sql = "SELECT DISTINCT g.*
FROM $table_group g FROM $table_group g
LEFT JOIN $table_group_user gu LEFT JOIN $table_group_user gu
ON (gu.group_id = g.id AND g.c_id = gu.c_id) ON (gu.group_id = g.iid AND g.c_id = gu.c_id)
LEFT JOIN $table_tutor_user tu LEFT JOIN $table_tutor_user tu
ON (tu.group_id = g.id AND g.c_id = tu.c_id) ON (tu.group_id = g.iid AND g.c_id = tu.c_id)
WHERE WHERE
g.c_id = $course_id AND g.c_id = $course_id AND
(gu.user_id = $user_id OR tu.user_id = $user_id) "; (gu.user_id = $user_id OR tu.user_id = $user_id) ";
@ -2054,10 +2031,10 @@ class GroupManager
$categoryId = $category['id']; $categoryId = $category['id'];
} }
$group_table = Database :: get_course_table(TABLE_GROUP); $group_table = Database::get_course_table(TABLE_GROUP);
$group_user_table = Database :: get_course_table(TABLE_GROUP_USER); $group_user_table = Database::get_course_table(TABLE_GROUP_USER);
$session_id = api_get_session_id(); $session_id = api_get_session_id();
$complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['code'], true, $session_id); $complete_user_list = CourseManager::get_real_and_linked_user_list($_course['code'], true, $session_id);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
/* /*
@ -2068,9 +2045,10 @@ class GroupManager
FROM $group_table g FROM $group_table g
LEFT JOIN $group_user_table ug LEFT JOIN $group_user_table ug
ON g.iid = ug.group_id ON g.iid = ug.group_id
WHERE g.c_id = $course_id AND WHERE
ug.c_id = $course_id AND g.c_id = $course_id AND
g.iid = $groupId ug.c_id = $course_id AND
g.iid = $groupId
GROUP BY (g.iid)"; GROUP BY (g.iid)";
$sql_result = Database::query($sql); $sql_result = Database::query($sql);
@ -2126,7 +2104,6 @@ class GroupManager
$hideGroup = api_get_setting('hide_course_group_if_no_tools_available'); $hideGroup = api_get_setting('hide_course_group_if_no_tools_available');
foreach ($group_list as $this_group) { foreach ($group_list as $this_group) {
// Validation when belongs to a session // Validation when belongs to a session
$session_img = api_get_session_image($this_group['session_id'], $user_info['status']); $session_img = api_get_session_image($this_group['session_id'], $user_info['status']);
@ -2176,7 +2153,7 @@ class GroupManager
foreach ($tutorsids_of_group as $tutor_id) { foreach ($tutorsids_of_group as $tutor_id) {
$tutor = api_get_user_info($tutor_id); $tutor = api_get_user_info($tutor_id);
$username = api_htmlentities(sprintf(get_lang('LoginX'), $tutor['username']), ENT_QUOTES); $username = api_htmlentities(sprintf(get_lang('LoginX'), $tutor['username']), ENT_QUOTES);
if (api_get_setting('show_email_addresses') == 'true') { if (api_get_setting('show_email_addresses') === 'true') {
$tutor_info .= Display::tag( $tutor_info .= Display::tag(
'span', 'span',
Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])), Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])),
@ -2184,9 +2161,17 @@ class GroupManager
).', '; ).', ';
} else { } else {
if (api_is_allowed_to_edit()) { if (api_is_allowed_to_edit()) {
$tutor_info .= Display::tag('span', Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])), array('title'=>$username)).', '; $tutor_info .= Display::tag(
'span',
Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])),
array('title'=>$username)
).', ';
} else { } else {
$tutor_info .= Display::tag('span', api_get_person_name($tutor['firstName'], $tutor['lastName']), array('title'=>$username)).', '; $tutor_info .= Display::tag(
'span',
api_get_person_name($tutor['firstName'], $tutor['lastName']),
array('title'=>$username)
).', ';
} }
} }
} }
@ -2196,7 +2181,7 @@ class GroupManager
$row[] = $tutor_info; $row[] = $tutor_info;
// Max number of members in group // Max number of members in group
$max_members = ($this_group['maximum_number_of_members'] == self::MEMBER_PER_GROUP_NO_LIMIT ? ' ' : ' / '.$this_group['maximum_number_of_members']); $max_members = $this_group['maximum_number_of_members'] == self::MEMBER_PER_GROUP_NO_LIMIT ? ' ' : ' / '.$this_group['maximum_number_of_members'];
// Number of members in group // Number of members in group
$row[] = $this_group['number_of_members'].$max_members; $row[] = $this_group['number_of_members'].$max_members;
@ -2234,9 +2219,6 @@ class GroupManager
$edit_actions .= '<a href="'.$url.'group_overview.php?action=export&type=xls&'.api_get_cidreq(true, false).'&id='.$this_group['id'].'" title="'.get_lang('ExportUsers').'">'. $edit_actions .= '<a href="'.$url.'group_overview.php?action=export&type=xls&'.api_get_cidreq(true, false).'&id='.$this_group['id'].'" title="'.get_lang('ExportUsers').'">'.
Display::return_icon('export_excel.png', get_lang('Export'), '', ICON_SIZE_SMALL).'</a>&nbsp;'; Display::return_icon('export_excel.png', get_lang('Export'), '', ICON_SIZE_SMALL).'</a>&nbsp;';
/*$edit_actions .= '<a href="'.api_get_self().'?'.api_get_cidreq(true, false).'&category='.$category_id.'&action=empty_one&id='.$this_group['id'].'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES))."'".')) return false;" title="'.get_lang('EmptyGroup').'">'.
Display::return_icon('clean.png',get_lang('EmptyGroup'),'',ICON_SIZE_SMALL).'</a>&nbsp;';*/
$edit_actions .= '<a href="'.api_get_self().'?'.api_get_cidreq(true, false).'&category='.$category_id.'&action=fill_one&id='.$this_group['id'].'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES))."'".')) return false;" title="'.get_lang('FillGroup').'">'. $edit_actions .= '<a href="'.api_get_self().'?'.api_get_cidreq(true, false).'&category='.$category_id.'&action=fill_one&id='.$this_group['id'].'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES))."'".')) return false;" title="'.get_lang('FillGroup').'">'.
Display::return_icon('fill.png',get_lang('FillGroup'),'',ICON_SIZE_SMALL).'</a>&nbsp;'; Display::return_icon('fill.png',get_lang('FillGroup'),'',ICON_SIZE_SMALL).'</a>&nbsp;';
@ -2468,8 +2450,8 @@ class GroupManager
$groups = GroupManager::get_groups(); $groups = GroupManager::get_groups();
foreach ($groups as $group) { foreach ($groups as $group) {
if (!in_array($group['id'], $elementsFound['groups'])) { if (!in_array($group['iid'], $elementsFound['groups'])) {
GroupManager::delete_groups(array($group['id'])); GroupManager::delete_groups($group['iid']);
$group['group'] = $group['name']; $group['group'] = $group['name'];
$result['deleted']['group'][] = $group; $result['deleted']['group'][] = $group;
} }
@ -2547,14 +2529,14 @@ class GroupManager
$categoryTitle = $categoryInfo['title']; $categoryTitle = $categoryInfo['title'];
} }
$users = GroupManager::getStudents($groupInfo['id']); $users = GroupManager::getStudents($groupInfo['iid']);
$userList = array(); $userList = array();
foreach ($users as $user) { foreach ($users as $user) {
$user = api_get_user_info($user['user_id']); $user = api_get_user_info($user['user_id']);
$userList[] = $user['username']; $userList[] = $user['username'];
} }
$tutors = GroupManager::getTutors($groupInfo['id']); $tutors = GroupManager::getTutors($groupInfo['iid']);
$tutorList = array(); $tutorList = array();
foreach ($tutors as $user) { foreach ($tutors as $user) {
$user = api_get_user_info($user['user_id']); $user = api_get_user_info($user['user_id']);
@ -2677,8 +2659,7 @@ class GroupManager
foreach ($groups as $group) { foreach ($groups as $group) {
$content .= '<li>'; $content .= '<li>';
$content .= Display::tag('h3', Security::remove_XSS($group['name'])); $content .= Display::tag('h3', Security::remove_XSS($group['name']));
$users = GroupManager::getTutors($group['iid']);
$users = GroupManager::getTutors($group['id']);
if (!empty($users)) { if (!empty($users)) {
$content .= '<ul>'; $content .= '<ul>';
$content .= "<li>".Display::tag('h4', get_lang('Tutors'))."</li><ul>"; $content .= "<li>".Display::tag('h4', get_lang('Tutors'))."</li><ul>";
@ -2692,7 +2673,7 @@ class GroupManager
$content .= '</ul>'; $content .= '</ul>';
} }
$users = GroupManager::getStudents($group['id']); $users = GroupManager::getStudents($group['iid']);
if (!empty($users)) { if (!empty($users)) {
$content .= '<ul>'; $content .= '<ul>';
$content .= "<li>".Display::tag('h4', get_lang('Students'))."</li><ul>"; $content .= "<li>".Display::tag('h4', get_lang('Students'))."</li><ul>";

@ -29,7 +29,7 @@ if (empty($userInfo) || empty($courseInfo)) {
// Only a teachers page. // Only a teachers page.
if (!empty($group_id)) { if (!empty($group_id)) {
$group_properties = GroupManager :: get_group_properties($group_id); $group_properties = GroupManager :: get_group_properties($group_id);
$show_work = false; $show_work = false;
if (api_is_allowed_to_edit(false, true)) { if (api_is_allowed_to_edit(false, true)) {
@ -38,7 +38,7 @@ if (!empty($group_id)) {
// you are not a teacher // you are not a teacher
$show_work = GroupManager::user_has_access( $show_work = GroupManager::user_has_access(
api_get_user_id(), api_get_user_id(),
$group_id, $group_properties['iid'],
GroupManager::GROUP_TOOL_WORK GroupManager::GROUP_TOOL_WORK
); );
} }

@ -4984,11 +4984,12 @@ function protectWork($courseInfo, $workId)
} }
allowOnlySubscribedUser($userId, $workId, $courseInfo['real_id']); allowOnlySubscribedUser($userId, $workId, $courseInfo['real_id']);
$groupInfo = GroupManager::get_group_properties($groupId);
if (!empty($groupId)) { if (!empty($groupId)) {
$showWork = GroupManager::user_has_access( $showWork = GroupManager::user_has_access(
$userId, $userId,
$groupId, $groupInfo['iid'],
GroupManager::GROUP_TOOL_WORK GroupManager::GROUP_TOOL_WORK
); );
if (!$showWork) { if (!$showWork) {

@ -42,7 +42,7 @@ $htmlHeadXtra[] = api_get_jqgrid_js();
$user_id = api_get_user_id(); $user_id = api_get_user_id();
if (!empty($group_id)) { if (!empty($group_id)) {
$group_properties = GroupManager :: get_group_properties($group_id); $group_properties = GroupManager :: get_group_properties($group_id);
$show_work = false; $show_work = false;
if (api_is_allowed_to_edit(false, true)) { if (api_is_allowed_to_edit(false, true)) {
@ -51,7 +51,7 @@ if (!empty($group_id)) {
// you are not a teacher // you are not a teacher
$show_work = GroupManager::user_has_access( $show_work = GroupManager::user_has_access(
$user_id, $user_id,
$group_id, $group_properties['iid'],
GroupManager::GROUP_TOOL_WORK GroupManager::GROUP_TOOL_WORK
); );
} }

@ -46,7 +46,7 @@ if (!empty($group_id)) {
// you are not a teacher // you are not a teacher
$show_work = GroupManager::user_has_access( $show_work = GroupManager::user_has_access(
$user_id, $user_id,
$group_id, $group_properties['iid'],
GroupManager::GROUP_TOOL_WORK GroupManager::GROUP_TOOL_WORK
); );
} }

@ -54,7 +54,7 @@ switch ($action) {
$token = Security::get_token(); $token = Security::get_token();
if (!empty($group_id)) { if (!empty($group_id)) {
$group_properties = GroupManager::get_group_properties($group_id); $group_properties = GroupManager::get_group_properties($group_id);
$show_work = false; $show_work = false;
if (api_is_allowed_to_edit(false, true)) { if (api_is_allowed_to_edit(false, true)) {
@ -63,7 +63,7 @@ if (!empty($group_id)) {
// you are not a teacher // you are not a teacher
$show_work = GroupManager::user_has_access( $show_work = GroupManager::user_has_access(
$user_id, $user_id,
$group_id, $group_properties['iid'],
GroupManager::GROUP_TOOL_WORK GroupManager::GROUP_TOOL_WORK
); );
} }

@ -305,15 +305,6 @@ class TestGroupManager extends UnitTestCase {
//var_dump($res); //var_dump($res);
} }
public function testCanUserUnsubscribe(){
global $user_id;
$group_id = 6;
$res = GroupManager::can_user_unsubscribe($user_id, $group_id);
$this->assertTrue(is_bool($res));
$this->assertTrue($res === false);
//var_dump($res);
}
public function testGetSubscribedUsers(){ public function testGetSubscribedUsers(){
$group_id = 2; $group_id = 2;
$res = GroupManager::get_subscribed_users($group_id); $res = GroupManager::get_subscribed_users($group_id);

Loading…
Cancel
Save