Browse Source

Adding the c_id field due the new database changes (single course database)

Julio Montoya 13 years ago
parent
commit
87d15e0370
1 changed files with 114 additions and 142 deletions
  1. 114 142
      main/inc/lib/groupmanager.lib.php

+ 114 - 142
main/inc/lib/groupmanager.lib.php

@@ -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['sysCode']."'"."AND tutor_id=1";
+		        WHERE user_id='".$user_id."' AND course_code='".$_course['code']."'"."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']);