[svn r15523] Fixed problem auto-registering users to a group - related to FS#2610

skala
Yannick Warnier 18 years ago
parent 4144a13be1
commit bf2fa332fb
  1. 20
      main/group/group.php
  2. 23
      main/inc/lib/course.lib.php
  3. 20
      main/inc/lib/groupmanager.lib.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;
}

@ -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;
}

@ -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]--;

Loading…
Cancel
Save