@ -7,8 +7,6 @@
/**
* Code
*/
require_once 'database.lib.php';
require_once 'course.lib.php';
require_once 'tablesort.lib.php';
require_once 'fileManage.lib.php';
require_once 'fileUpload.lib.php';
@ -63,12 +61,9 @@ define("DEFAULT_GROUP_CATEGORY", 2);
* be used outside a session.
*/
class GroupManager {
/*==============================================================================
* GROUP FUNCTIONS
==============================================================================*/
private function __construct() {
}
//GROUP FUNCTIONS
private function __construct() {
}
/**
* Get list of groups for current course.
* @param int $category The id of the category from which the groups are
@ -77,11 +72,10 @@ class GroupManager {
* @return array An array with all information about the groups.
*/
public static function get_group_list ($category = null, $course_code = null) {
global $_user;
//$isStudentView = $_REQUEST['isStudentView'];
$course_db = '';
$my_user_id=api_get_user_id();
$my_status_of_user_in_course='';
$course_db = '';
$my_user_id = api_get_user_id();
$my_status_of_user_in_course = '';
/*
if ($course_code != null) {
$course_info = Database :: get_course_info($course_code);
@ -90,18 +84,16 @@ class GroupManager {
$my_course_code=api_get_course_id();
}
*/
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$table_group = Database :: get_course_table(TABLE_GROUP);
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
$table_group = Database :: get_course_table(TABLE_GROUP);
//condition for the session
$session_id = api_get_session_id();
$my_status_of_user_in_course = CourseManager::get_user_in_course_status($my_user_id, $course_info['code']);
$my_status_of_user_in_course = CourseManager::get_user_in_course_status($my_user_id, $course_info['code']);
$is_student_in_session = false;
if (is_null($my_status_of_user_in_course) || $my_status_of_user_in_course=='') {//into session
@ -111,8 +103,8 @@ class GroupManager {
}
//COURSEMANAGER or STUDENT
if ($my_status_of_user_in_course==COURSEMANAGER || api_is_allowed_to_edit(null, true) || api_is_drh()) {
$sql = "SELECT g.id ,
if ($my_status_of_user_in_course == COURSEMANAGER || api_is_allowed_to_edit(null, true) || api_is_drh()) {
$sql = "SELECT g.id ,
g.name ,
g.description ,
g.category_id,
@ -129,9 +121,9 @@ class GroupManager {
LEFT JOIN ".$table_group_user." ug2
ON ug2.group_id = g.id";
} elseif ($my_status_of_user_in_course==STUDENT || $is_student_in_session===true || $_SESSION['studentview'] == 'studentview') {
$sql = "SELECT g.id ,
g.name ,
g.description ,
$sql = "SELECT g.id,
g.name,
g.description,
g.category_id,
g.max_student maximum_number_of_members,
g.secret_directory,
@ -145,21 +137,20 @@ class GroupManager {
ON ug.group_id = g.id AND ug.user_id = '".api_get_user_id()."'
LEFT JOIN ".$table_group_user." ug2
ON ug2.group_id = g.id";
}
$sql .= " AND ug.c_id = $course_id";
}
$sql .= " WHERE 1=1 ";
$sql .= "WHERE 1=1 ";
if ($category != null) {
$sql .= " AND g.category_id = '".Database::escape_string($category)."' ";
$session_condition = api_get_session_condition($session_id);
if(!empty($session_condition))
$sql .= $session_condition;
} else
} else {
$session_condition = api_get_session_condition($session_id, true);
}
$sql .= " AND g.c_id = $course_id AND
ug.c_id = $course_id
";
$sql .= " AND g.c_id = $course_id ";
if(!empty($session_condition))
$sql .= $session_condition;
@ -210,11 +201,11 @@ class GroupManager {
$course_id = api_get_course_int_id();
if (intval($places) == 0) //if the amount of users per group is not filled in, use the setting from the category
{
if (intval($places) == 0) {
//if the amount of users per group is not filled in, use the setting from the category
$places = $category['max_student'];
}
$sql = "INSERT INTO ".$table_group." SET
echo $sql = "INSERT INTO ".$table_group." SET
c_id = $course_id ,
category_id='".Database::escape_string($category_id)."',
max_student = '".$places."',
@ -236,7 +227,8 @@ class GroupManager {
$my_path = api_get_path(SYS_COURSE_PATH).$currentCourseRepository.'/document';
$unique_name = create_unexisting_directory($_course,$_user['user_id'], api_get_session_id(), $lastId,NULL,$my_path, $desired_dir_name);
/* Stores the directory path into the group table */
$sql = "UPDATE ".$table_group." SET name = '".Database::escape_string($name)."', secret_directory = '".$unique_name."' WHERE id ='".$lastId."'";
$sql = "UPDATE ".$table_group." SET name = '".Database::escape_string($name)."', secret_directory = '".$unique_name."'
WHERE c_id = $course_id AND id ='".$lastId."'";
Database::query($sql);
@ -286,6 +278,7 @@ class GroupManager {
* @param int $number_of_groups The number of groups that have to be created
*/
public static function create_subgroups ($group_id, $number_of_groups) {
$course_id = api_get_course_int_id();
$table_group = Database :: get_course_table(TABLE_GROUP);
$category_id = self :: create_category('Subgroups', '', TOOL_PRIVATE, TOOL_PRIVATE, 0, 0, 1, 1);
$users = self :: get_users($group_id);
@ -296,14 +289,12 @@ class GroupManager {
$group_ids[] = self :: create_group('SUBGROUP '.$group_nr, $category_id, 0, 0);
}
$members = array ();
foreach ($users as $index => $user_id)
{
foreach ($users as $index => $user_id) {
self :: subscribe_users($user_id, $group_ids[$index % $number_of_groups]);
$members[$group_ids[$index % $number_of_groups]]++;
}
foreach ($members as $group_id => $places)
{
$sql = "UPDATE $table_group SET max_student = $places WHERE id = $group_id";
foreach ($members as $group_id => $places) {
$sql = "UPDATE $table_group SET max_student = $places WHERE c_id = $course_id AND id = $group_id";
Database::query($sql);
}
}
@ -374,14 +365,7 @@ class GroupManager {
* @param string $course_code Default is current course
* @return integer - number of groups deleted.
*/
public static function delete_groups($group_ids, $course_code = null) {
/*$course_db = '';
if ($course_code != null) {
$course = Database :: get_course_info($course_code);
$course['path'] = $course['directory'];
$course_db = $course['database'];
} else {
}*/
public static function delete_groups($group_ids, $course_code = null) {
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
@ -404,15 +388,6 @@ class GroupManager {
return 0;
}
// define repository for deleted element
/* Useless code
$group_garbage = api_get_path(SYS_ARCHIVE_PATH).$course['path']."/group";
var_dump($group_garbage);
if (!file_exists($group_garbage))
FileManager :: mkdirs($group_garbage, api_get_permissions_for_new_directories());
*/
// Unsubscribe all users
self :: unsubscribe_all_users($group_ids);
$sql = "SELECT id, secret_directory, session_id FROM $group_table WHERE c_id = $course_id AND id IN (".implode(' , ', $group_ids).")";
@ -467,21 +442,21 @@ class GroupManager {
$db_result = Database::query($sql);
$db_object = Database::fetch_object($db_result);
$result['id'] = $db_object->id;
$result['name'] = $db_object->name;
$result['tutor_id'] = isset($db_object->tutor_id)?$db_object->tutor_id:null;
$result['description'] = $db_object->description;
$result['maximum_number_of_students'] = $db_object->max_student;
$result['doc_state'] = $db_object->doc_state;
$result['work_state'] = $db_object->work_state;
$result['calendar_state'] = $db_object->calendar_state;
$result['announcements_state'] = $db_object->announcements_state;
$result['forum_state'] = $db_object->forum_state;
$result['wiki_state'] = $db_object->wiki_state;
$result['chat_state'] = $db_object->chat_state;
$result['directory'] = $db_object->secret_directory;
$result['self_registration_allowed'] = $db_object->self_registration_allowed;
$result['self_unregistration_allowed'] = $db_object->self_unregistration_allowed;
$result['id'] = $db_object->id;
$result['name'] = $db_object->name;
$result['tutor_id'] = isset($db_object->tutor_id)?$db_object->tutor_id:null;
$result['description'] = $db_object->description;
$result['maximum_number_of_students'] = $db_object->max_student;
$result['doc_state'] = $db_object->doc_state;
$result['work_state'] = $db_object->work_state;
$result['calendar_state'] = $db_object->calendar_state;
$result['announcements_state'] = $db_object->announcements_state;
$result['forum_state'] = $db_object->forum_state;
$result['wiki_state'] = $db_object->wiki_state;
$result['chat_state'] = $db_object->chat_state;
$result['directory'] = $db_object->secret_directory;
$result['self_registration_allowed'] = $db_object->self_registration_allowed;
$result['self_unregistration_allowed'] = $db_object->self_unregistration_allowed;
return $result;
}
@ -508,6 +483,7 @@ class GroupManager {
$table_forum = Database :: get_course_table(TABLE_FORUM);
//$forum_id = get_forums_of_group($group_id);
$group_id = Database::escape_string($group_id);
$course_id = api_get_course_int_id();
$sql = "UPDATE ".$table_group."
SET name='".Database::escape_string(trim($name))."',
doc_state = '".Database::escape_string($doc_state)."',
@ -533,9 +509,8 @@ class GroupManager {
} elseif ($forum_state===0) {
$sql2 .= " forum_group_public_private='unavailable' ";
}
$sql2 .=" WHERE forum_of_group=".$group_id;
$sql2 .=" WHERE c_id = $course_id AND forum_of_group=".$group_id;
$result2 = Database::query($sql2);
return $result;
}
/**
@ -543,8 +518,9 @@ class GroupManager {
* @return int The number of groups for the current course.
*/
public static function get_number_of_groups() {
$course_id = api_get_course_int_id();
$table_group = Database :: get_course_table(TABLE_GROUP);
$res = Database::query('SELECT COUNT(id) AS number_of_groups FROM '.$table_group );
$res = Database::query("SELECT COUNT(id) AS number_of_groups FROM $table_group WHERE c_id = $course_id " );
$obj = Database::fetch_object($res);
return $obj->number_of_groups;
}
@ -716,17 +692,12 @@ class GroupManager {
* Returns the number of groups of the user with the greatest number of
* subscribtions in the given category
*/
public static function get_current_max_groups_per_user ($category_id = null, $course_code = null) {
$course_db = '';
if ($course_code != null)
{
$course_info = Database :: get_course_info($course_code);
$course_db = $course_info['database'];
}
$group_table = Database :: get_course_table(TABLE_GROUP, $course_db);
$group_user_table = Database :: get_course_table(TABLE_GROUP_USER, $course_db);
$sql = 'SELECT COUNT(gu.group_id) AS current_max FROM '.$group_user_table.' gu, '.$group_table.' g WHERE gu.group_id = g.id ';
public static function get_current_max_groups_per_user ($category_id = null, $course_code = null) {
$course_info = api_get_course_info ($course_code);
$group_table = Database :: get_course_table(TABLE_GROUP);
$group_user_table = Database :: get_course_table(TABLE_GROUP_USER);
$sql = 'SELECT COUNT(gu.group_id) AS current_max FROM '.$group_user_table.' gu, '.$group_table.' g
WHERE g.c_id = '.$course_info['real_id'].' AND gu.group_id = g.id ';
if ($category_id != null) {
$category_id = Database::escape_string($category_id);
$sql .= ' AND g.category_id = '.$category_id;
@ -746,14 +717,17 @@ class GroupManager {
$table_group_cat = Database :: get_course_table(TABLE_GROUP_CATEGORY);
$id1 = Database::escape_string($id1);
$id2 = Database::escape_string($id2);
$course_id = api_get_course_int_id();
$sql = "SELECT id,display_order FROM $table_group_cat WHERE id IN ($id1,$id2)";
$sql = "SELECT id,display_order FROM $table_group_cat WHERE id IN ($id1,$id2) AND c_id = $course_id ";
$res = Database::query($sql);
$cat1 = Database::fetch_object($res);
$cat2 = Database::fetch_object($res);
$sql = "UPDATE $table_group_cat SET display_order=$cat2->display_order WHERE id=$cat1->id";
$sql = "UPDATE $table_group_cat SET display_order=$cat2->display_order WHERE id = $cat1->id AND c_id = $course_id ";
Database::query($sql);
$sql = "UPDATE $table_group_cat SET display_order=$cat1->display_order WHERE id=$cat2->id";
$sql = "UPDATE $table_group_cat SET display_order=$cat1->display_order WHERE id = $cat2->id AND c_id = $course_id ";
Database::query($sql);
}
@ -769,7 +743,8 @@ class GroupManager {
public static function get_users ($group_id) {
$group_user_table = Database :: get_course_table(TABLE_GROUP_USER);
$group_id = Database::escape_string($group_id);
$sql = "SELECT user_id FROM $group_user_table WHERE group_id = $group_id";
$course_id = api_get_course_int_id();
$sql = "SELECT user_id FROM $group_user_table WHERE c_id = $course_id AND group_id = $group_id";
$res = Database::query($sql);
$users = array ();
while ($obj = Database::fetch_object($res)) {
@ -817,14 +792,14 @@ class GroupManager {
}
global $_course;
$category = self :: get_category_from_group($group_ids[0]);
$category = self::get_category_from_group($group_ids[0]);
$groups_per_user = $category['groups_per_user'];
$course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$group_table = Database :: get_course_table(TABLE_GROUP);
$group_user_table = Database :: get_course_table(TABLE_GROUP_USER);
$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 == GROUP_PER_MEMBER_NO_LIMIT ? INFINITE : $groups_per_user);
/*
@ -839,8 +814,7 @@ class GroupManager {
LEFT JOIN ".$group_user_table." ug
ON g.id = ug.group_id
WHERE
g.c_id = $course_id AND
ug.c_id = $course_id AND
g.c_id = $course_id AND
g.id IN (".implode(',', $group_ids).")
GROUP BY (g.id)
HAVING (nbPlaces > 0 OR g.max_student = ".MEMBER_PER_GROUP_NO_LIMIT.")
@ -921,7 +895,9 @@ class GroupManager {
public static function number_of_students ($group_id) {
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
$group_id = Database::escape_string($group_id);
$db_result = Database::query('SELECT COUNT(*) AS number_of_students FROM '.$table_group_user.' WHERE group_id = '.$group_id);
$course_id = api_get_course_int_id();
$sql = "SELECT COUNT(*) AS number_of_students FROM $table_group_user WHERE c_id = $course_id AND group_id = $group_id";
$db_result = Database::query($sql);
$db_object = Database::fetch_object($db_result);
return $db_object->number_of_students;
}
@ -933,10 +909,10 @@ class GroupManager {
public static function maximum_number_of_students ($group_id) {
$table_group = Database :: get_course_table(TABLE_GROUP);
$group_id = Database::escape_string($group_id);
$db_result = Database::query('SELECT max_student FROM '.$table_group.' WHERE id = '.$group_id);
$course_id = api_get_course_int_id();
$db_result = Database::query("SELECT max_student FROM $table_group WHERE c_id = $course_id AND id = $group_id");
$db_object = Database::fetch_object($db_result);
if ($db_object->max_student == 0)
{
if ($db_object->max_student == 0) {
return INFINITE;
}
return $db_object->max_student;
@ -971,12 +947,13 @@ class GroupManager {
* @return bool TRUE if self-registration is allowed in the given group.
*/
public static function is_self_registration_allowed ($user_id, $group_id) {
$course_id = api_get_course_int_id();
if (!$user_id > 0)
return false;
$table_group = Database :: get_course_table(TABLE_GROUP);
$group_id= intval($group_id);
if (isset($group_id)) {
$sql = 'SELECT self_registration_allowed FROM '.$table_group.' WHERE id = "'.$group_id.'" ' ;
$sql = "SELECT self_registration_allowed FROM $table_group WHERE c_id = $course_id AND id = $group_id" ;
$db_result = Database::query($sql);
$db_object = Database::fetch_object($db_result);
return $db_object->self_registration_allowed == 1 & & self :: can_user_subscribe($user_id, $group_id);
@ -995,7 +972,8 @@ class GroupManager {
return false;
$table_group = Database :: get_course_table(TABLE_GROUP);
$group_id = Database::escape_string($group_id);
$db_result = Database::query('SELECT self_unregistration_allowed FROM '.$table_group.' WHERE id = '.$group_id);
$course_id = api_get_course_int_id();
$db_result = Database::query('SELECT self_unregistration_allowed FROM '.$table_group.' WHERE c_id = '.$course_id.' AND id = '.$group_id);
$db_object = Database::fetch_object($db_result);
return $db_object->self_unregistration_allowed == 1 & & self :: can_user_unsubscribe($user_id, $group_id);
}
@ -1010,7 +988,8 @@ class GroupManager {
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
$group_id = Database::escape_string($group_id);
$user_id = Database::escape_string($user_id);
$sql = 'SELECT 1 FROM '.$table_group_user.' WHERE group_id = '.$group_id.' AND user_id = '.$user_id;
$course_id = api_get_course_int_id();
$sql = 'SELECT 1 FROM '.$table_group_user.' WHERE c_id = '.$course_id.' AND group_id = '.$group_id.' AND user_id = '.$user_id;
$db_result = Database::query($sql);
return Database::num_rows($db_result) > 0;
}
@ -1027,8 +1006,7 @@ class GroupManager {
$result = CourseManager :: is_user_subscribed_in_real_or_linked_course($user_id, $course_code);
$result = !self :: is_subscribed($user_id, $group_id);
$result & = (self :: number_of_students($group_id) < self :: maximum_number_of_students ( $ group_id ) ) ;
if ($category['groups_per_user'] == GROUP_PER_MEMBER_NO_LIMIT)
{
if ($category['groups_per_user'] == GROUP_PER_MEMBER_NO_LIMIT) {
$category['groups_per_user'] = INFINITE;
}
$result & = (self :: user_in_number_of_groups($user_id, $category['id']) < $category['groups_per_user']);
@ -1061,7 +1039,7 @@ class GroupManager {
$sql = "SELECT ug.id, u.user_id, u.lastname, u.firstname, u.email
FROM ".$table_user." u, ".$table_group_user." ug
WHERE ug.c_id = $course_id AND
WHERE ug.c_id = $course_id AND
ug.group_id='".$group_id."' AND
ug.user_id=u.user_id". $order_clause;
$db_result = Database::query($sql);
@ -1098,16 +1076,13 @@ class GroupManager {
$db_result = Database::query($sql);
$users = array ();
while ($user = Database::fetch_object($db_result)) {
if (!$id_only)
{
if (!$id_only) {
$member['user_id'] = $user->user_id;
$member['firstname'] = $user->firstname;
$member['lastname'] = $user->lastname;
$member['email'] = $user->email;
$users[] = $member;
}
else
{
} else {
$users[]=$user->user_id;
}
}
@ -1124,11 +1099,13 @@ class GroupManager {
$result = true;
$course_id = api_get_course_int_id();
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
foreach ($user_ids as $index => $user_id) {
$user_id = Database::escape_string($user_id);
$group_id = Database::escape_string($group_id);
$sql = "INSERT INTO ".$table_group_user." (c_id, user_id, group_id) VALUES ('$course_id', '".$user_id."', '".$group_id."')";
$result & = Database::query($sql);
if (!empty($user_ids)) {
foreach ($user_ids as $index => $user_id) {
$user_id = Database::escape_string($user_id);
$group_id = Database::escape_string($group_id);
$sql = "INSERT INTO ".$table_group_user." (c_id, user_id, group_id) VALUES ('$course_id', '".$user_id."', '".$group_id."')";
$result & = Database::query($sql);
}
}
return $result;
}
@ -1176,13 +1153,14 @@ class GroupManager {
* @return bool TRUE if successfull
*/
public static function unsubscribe_all_users ($group_ids) {
$course_id = api_get_course_int_id();
$group_ids = is_array($group_ids) ? $group_ids : array ($group_ids);
$group_ids = array_map('intval',$group_ids);
if( count($group_ids) > 0) {
if(api_is_course_coach()) {
for($i=0 ; $i< count ( $ group_ids ) ; $ i + + ) {
if(!api_is_element_in_the_session(TOOL_GROUP,$group_ids[$i]))
{
if(!api_is_element_in_the_session(TOOL_GROUP,$group_ids[$i])) {
array_splice($group_ids,$i,1);
$i--;
}
@ -1192,7 +1170,7 @@ class GroupManager {
}
}
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
$sql = 'DELETE FROM '.$table_group_user.' WHERE group_id IN ('.implode(',', $group_ids).')';
$sql = 'DELETE FROM '.$table_group_user.' WHERE group_id IN ('.implode(',', $group_ids).') AND c_id = '.$course_id ;
$result = Database::query($sql);
return $result;
}
@ -1206,11 +1184,11 @@ class GroupManager {
* @author Patrick Cool < patrick.cool @ UGent . be > , Ghent University
*/
public static function unsubscribe_all_tutors ($group_ids) {
$course_id = api_get_course_int_id();
$group_ids = is_array($group_ids) ? $group_ids : array ($group_ids);
if( count($group_ids) > 0)
{
if( count($group_ids) > 0) {
$table_group_tutor = Database :: get_course_table(TABLE_GROUP_TUTOR);
$sql = 'DELETE FROM '.$table_group_tutor.' WHERE group_id IN ('.implode(',', $group_ids).')';
$sql = 'DELETE FROM '.$table_group_tutor.' WHERE group_id IN ('.implode(',', $group_ids).') AND c_id = '.$course_id ;
$result = Database::query($sql);
return $result;
}
@ -1230,8 +1208,9 @@ class GroupManager {
$table_group_tutor = Database :: get_course_table(TABLE_GROUP_TUTOR);
$user_id = Database::escape_string($user_id);
$group_id = Database::escape_string($group_id);
$sql = "SELECT * FROM ".$table_group_tutor." WHERE user_id='".$user_id."' AND group_id='".$group_id."'";
$course_id = api_get_course_int_id();
$sql = "SELECT * FROM ".$table_group_tutor." WHERE c_id = $course_id AND user_id='".$user_id."' AND group_id='".$group_id."'";
$result = Database::query($sql);
if (Database::num_rows($result)>0) {
return true;
@ -1252,13 +1231,9 @@ class GroupManager {
public static function is_user_in_group ($user_id, $group_id) {
$member = self :: is_subscribed($user_id,$group_id);
$tutor = self :: is_tutor_of_group($user_id,$group_id);
if ($member OR $tutor)
{
if ($member OR $tutor) {
return true;
}
else
{
} else {
return false;
}
}
@ -1298,11 +1273,11 @@ class GroupManager {
*/
public static function is_tutor ($user_id) {
global $_course;
$course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$user_id = Database::escape_string($user_id);
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$user_id = Database::escape_string($user_id);
$sql = "SELECT tutor_id FROM ".$course_user_table."
WHERE user_id='".$user_id."' AND course_code='".$_course['sysC ode']."'"."AND tutor_id=1";
WHERE user_id='".$user_id."' AND course_code='".$_course['c ode']."'"."AND tutor_id=1";
$db_result = Database::query($sql);
$result = (Database::num_rows($db_result) > 0);
return $result;
@ -1335,8 +1310,7 @@ class GroupManager {
return $groups;
}
/*
-----------------------------------------------------------
/*
Group functions
these take virtual/linked courses into account when necessary
-----------------------------------------------------------
@ -1534,12 +1508,12 @@ class GroupManager {
$table_group_user=Database::get_course_table(TABLE_GROUP_USER);
$table_group=Database::get_course_table(TABLE_GROUP);
$user_id = Database::escape_string($user_id);
$sql_groups = 'SELECT name FROM '.$table_group.' g,'.$table_group_user.' gu WHERE gu.user_id="'.$user_id.'" AND gu.group_id=g.id';
$course_id = api_get_course_int_id();
$sql_groups = 'SELECT name FROM '.$table_group.' g,'.$table_group_user.' gu WHERE g.c_id '.$course_id.' AND gu.user_id="'.$user_id.'" AND gu.group_id=g.id';
$res = Database::query($sql_groups);
$groups=array();
while($group = Database::fetch_array($res))
{
while($group = Database::fetch_array($res)) {
$groups[] .= $group['name'];
}
return $groups;
@ -1558,7 +1532,6 @@ class GroupManager {
public static function fill_groups_list ($group_ids) {
$group_ids = is_array($group_ids) ? $group_ids : array ($group_ids);
$group_ids = array_map('intval',$group_ids);
if (api_is_course_coach()) {
for($i=0 ; $i< count ( $ group_ids ) ; $ i + + ) {
if(!api_is_element_in_the_session(TOOL_GROUP,$group_ids[$i])) {
@ -1579,6 +1552,7 @@ class GroupManager {
$session_id = api_get_session_id();
$complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['sysCode'], true, $session_id);
$number_groups_per_user = ($groups_per_user == GROUP_PER_MEMBER_NO_LIMIT ? INFINITE : $groups_per_user);
$course_id = api_get_course_int_id();
/*
* Retrieve all the groups where enrollment is still allowed
* (reverse) ordered by the number of place available
@ -1587,22 +1561,20 @@ class GroupManager {
FROM ".$group_table." g
LEFT JOIN ".$group_user_table." ug
ON g.id = ug.group_id
WHERE g.id IN (".implode(',', $group_ids).")
WHERE g.c_id = $course_id AND g. id IN (".implode(',', $group_ids).")
GROUP BY (g.id)
HAVING (nbPlaces > 0 OR g.max_student = ".MEMBER_PER_GROUP_NO_LIMIT.")
ORDER BY nbPlaces DESC";
$sql_result = Database::query($sql);
$group_available_place = array ();
while ($group = Database::fetch_array($sql_result, 'ASSOC'))
{
while ($group = Database::fetch_array($sql_result, 'ASSOC')) {
$group_available_place[$group['gid']] = $group['nbPlaces'];
}
/*
* Retrieve course users (reverse) ordered by the number
* of group they are already enrolled
*/
for ($i = 0; $i < count ( $ complete_user_list ) ; $ i + + )
{
for ($i = 0; $i < count ( $ complete_user_list ) ; $ i + + ) {
//find # of groups the user is enrolled in
$number_of_groups = self :: user_in_number_of_groups($complete_user_list[$i]["user_id"],$category['id']);