diff --git a/main/group/group.php b/main/group/group.php index 0e5d60bdc1..1fbae64a5f 100644 --- a/main/group/group.php +++ b/main/group/group.php @@ -3,7 +3,7 @@ =============================================================================== Dokeos - elearning and course management software - Copyright (c) 2004-2008 Dokeos S.A. + Copyright (c) 2004-2008 Dokeos SPRL Copyright (c) 2003 Ghent University (UGent) Copyright (c) 2001 Universite catholique de Louvain (UCL) Copyright (c) Roan Embrechts (Vrije Universiteit Brussel) @@ -43,14 +43,14 @@ ============================================================================== */ // name of the language file that needs to be included -$language_file = "group"; +$language_file = 'group'; include ('../inc/global.inc.php'); $this_section=SECTION_COURSES; // notice for unauthorized people. api_protect_course_script(true); -$nameTools = get_lang("GroupManagement"); +$nameTools = get_lang('GroupManagement'); /* ----------------------------------------------------------- @@ -67,7 +67,7 @@ if( api_get_setting('allow_group_categories') == 'false') $cat_table = Database::get_course_table(TABLE_GROUP_CATEGORY); $sql = "SELECT * FROM $cat_table WHERE id = '".DEFAULT_GROUP_CATEGORY."'"; $res = api_sql_query($sql,__FILE__,__LINE__); - $num = mysql_num_rows($res); + $num = Database::num_rows($res); if($num == 0) { api_sql_query("INSERT INTO ".$cat_table." ( id , title , description , forum_state , max_student , self_reg_allowed , self_unreg_allowed , groups_per_user , display_order ) VALUES ('2', '".lang2db($DefaultGroupCategory)."', '', '1', '8', '0', '0', '0', '0');"); @@ -84,7 +84,7 @@ if (!isset ($_GET['origin']) || $_GET['origin'] != 'learnpath') event_access_tool(TOOL_GROUP); if (! $is_allowed_in_course) api_not_allowed(true); } -Display::display_header(get_lang("Groups")); +Display::display_header(get_lang('Groups')); /* ----------------------------------------------------------- @@ -135,21 +135,21 @@ if (api_is_allowed_to_edit()) if( is_array($_POST['group'])) { GroupManager :: delete_groups($_POST['group']); - Display :: display_normal_message(get_lang("SelectedGroupsDeleted")); + Display :: display_normal_message(get_lang('SelectedGroupsDeleted')); } break; case 'empty_selected' : if( is_array($_POST['group'])) { - GroupManager :: unsubscribe_all_users($_POST['group']); - Display :: display_normal_message(get_lang("SelectedGroupsEmptied")); + GroupManager :: unsubscribe_all_users($_POST['group']); + Display :: display_normal_message(get_lang('SelectedGroupsEmptied')); } break; case 'fill_selected' : if( is_array($_POST['group'])) { - GroupManager :: fill_groups($_POST['group']); - Display :: display_normal_message(get_lang("SelectedGroupsFilled")); + GroupManager :: fill_groups($_POST['group']); + Display :: display_normal_message(get_lang('SelectedGroupsFilled')); } break; } diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 3d2cd63f55..7052170867 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -3,7 +3,7 @@ ============================================================================== Dokeos - elearning and course management software - Copyright (c) 2004-2005 Dokeos S.A. + Copyright (c) 2004-2008 Dokeos SPRL Copyright (c) 2001 Universite catholique de Louvain (UCL) Copyright (c) Roan Embrechts, Vrije Universiteit Brussel Copyright (c) Bart Mollet, Hogeschool Gent @@ -19,7 +19,7 @@ See the GNU General Public License for more details. - Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium + Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium Mail: info@dokeos.com ============================================================================== */ @@ -1079,9 +1079,12 @@ class CourseManager $where = array(); - $sql = 'SELECT DISTINCT user.user_id - FROM '.$table_users.' as user'; - + $sql = 'SELECT DISTINCT user.user_id '; + if ( $session_id == 0 ) { + $sql .= ', course_rel_user.role, course_rel_user.tutor_id '; + } + $sql .= ' FROM '.$table_users.' as user '; + if(api_get_setting('use_session_mode')=='true' && $with_session) { $table_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); @@ -1114,9 +1117,13 @@ class CourseManager while($user = Database::fetch_array($rs)) { $user_infos = Database :: get_user_info_from_id($user['user_id']); - $user_infos["status"] = $user["status"]; - $user_infos["role"] = $user["role"]; - $user_infos["tutor_id"] = $user["tutor_id"]; + //$user_infos['status'] = $user['status']; + if ( isset($user['role']) ) { + $user_infos['role'] = $user['role']; + } + if ( isset($user['tutor_id']) ) { + $user_infos['tutor_id'] = $user['tutor_id']; + } $a_users[$user['user_id']] = $user_infos; } diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php index c9e10932ee..995735277f 100644 --- a/main/inc/lib/groupmanager.lib.php +++ b/main/inc/lib/groupmanager.lib.php @@ -700,7 +700,7 @@ class GroupManager $group_table = Database :: get_course_table(TABLE_GROUP); $group_user_table = Database :: get_course_table(TABLE_GROUP_USER); $complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['sysCode']); - $number_groups_per_user = ($groups_per_user == GROUP_PER_MEMBER_NO_LIMIT ? INFINITE : $groups_per_user); + $number_groups_per_user = ($groups_per_user == GROUP_PER_MEMBER_NO_LIMIT ? INFINITE : $groups_per_user); /* * Retrieve all the groups where enrollment is still allowed * (reverse) ordered by the number of place available @@ -715,7 +715,7 @@ class GroupManager ORDER BY nbPlaces DESC"; $sql_result = api_sql_query($sql,__FILE__,__LINE__); $group_available_place = array (); - while ($group = mysql_fetch_array($sql_result, MYSQL_ASSOC)) + while ($group = Database::fetch_array($sql_result, 'ASSOC')) { $group_available_place[$group['gid']] = $group['nbPlaces']; } @@ -725,10 +725,11 @@ class GroupManager */ for ($i = 0; $i < count($complete_user_list); $i ++) { + //find # of groups the user is enrolled in $number_of_groups = GroupManager :: user_in_number_of_groups($complete_user_list[$i]["user_id"],$category['id']); //add # of groups to user list - $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 $complete_user_list = TableSort :: sort_table($complete_user_list, 'user_id'); @@ -739,23 +740,25 @@ class GroupManager $userToken = array (); foreach ($complete_user_list as $this_user) { - if ($this_user["number_groups_left"] > 0) + + if ($this_user['number_groups_left'] > 0) { - $userToken[$this_user["user_id"]] = $this_user["number_groups_left"]; + $userToken[$this_user['user_id']] = $this_user['number_groups_left']; } } /* * Retrieve the present state of the users repartion in groups */ - $sql = "SELECT user_id uid, group_id gid FROM ".$group_user_table.""; + $sql = "SELECT user_id uid, group_id gid FROM ".$group_user_table; $result = api_sql_query($sql,__FILE__,__LINE__); - while ($member = mysql_fetch_array($result, MYSQL_ASSOC)) + while ($member = Database::fetch_array($result, 'ASSOC')) { - $groupUser[$member[gid]][] = $member[uid]; + $groupUser[$member['gid']][] = $member['uid']; } $changed = true; while ($changed) { + $changed = false; reset($group_available_place); arsort($group_available_place); @@ -767,6 +770,7 @@ class GroupManager { if (GroupManager :: can_user_subscribe($user_id, $group_id)) { + GroupManager :: subscribe_users($user_id, $group_id); $group_available_place[$group_id]--; $userToken[$user_id]--;