2 /************************************************************************/
\r
4 /************************************************************************/
\r
5 /* Copyright (c) 2002-2010 */
\r
6 /* Inclusive Design Institute */
\r
7 /* http://atutor.ca */
\r
9 /* This program is free software. You can redistribute it and/or */
\r
10 /* modify it under the terms of the GNU General Public License */
\r
11 /* as published by the Free Software Foundation. */
\r
12 /************************************************************************/
\r
15 define('AT_INCLUDE_PATH', '../../../include/');
\r
16 require(AT_INCLUDE_PATH.'vitals.inc.php');
\r
17 authenticate(AT_PRIV_GROUPS);
\r
19 if (isset($_POST['cancel'])) {
\r
20 $msg->addFeedback('CANCELLED');
\r
21 header('Location: index.php');
\r
23 } else if (isset($_POST['submit'])) {
\r
25 if (isset($_POST['modules'])) {
\r
26 $modules = implode('|', $_POST['modules']);
\r
29 $_POST['type_title'] = trim($_POST['type_title']);
\r
30 $_POST['num_students'] = abs($_POST['num_students']);
\r
31 $_POST['num_groups'] = abs($_POST['num_groups']);
\r
32 $_POST['num_g'] = intval($_POST['num_g']);
\r
34 $missing_fields = array();
\r
36 if (!$_POST['type_title']) {
\r
37 $missing_fields[] = _AT('groups_type');
\r
40 if (!$_POST['prefix']) {
\r
41 $missing_fields[] = _AT('group_prefix');
\r
44 $course_owner = $system_courses[$_SESSION['course_id']]['member_id'];
\r
45 if (isset($_POST['fill'])) {
\r
46 $sql = "SELECT member_id FROM ".TABLE_PREFIX."course_enrollment WHERE course_id=$_SESSION[course_id] AND approved='y' AND `privileges`&".AT_PRIV_GROUPS."=0 AND member_id<>$course_owner";
\r
47 $result = mysql_query($sql, $db);
\r
48 $total_students = mysql_num_rows($result);
\r
49 $students = array();
\r
50 while ($row = mysql_fetch_assoc($result)) {
\r
51 $students[] = $row['member_id'];
\r
55 $sql = "SELECT COUNT(*) AS cnt FROM ".TABLE_PREFIX."course_enrollment WHERE course_id=$_SESSION[course_id] AND approved='y' AND `privileges`&".AT_PRIV_GROUPS."=0 AND member_id<>$course_owner";
\r
56 $result = mysql_query($sql, $db);
\r
57 $row = mysql_fetch_assoc($result);
\r
59 $total_students = $row['cnt']; // 4 students in the course
\r
62 if ($_POST['num_g'] == 1) { // number of students per group
\r
63 $num_students_per_group = $_POST['num_students'];
\r
65 if ($num_students_per_group == 0) {
\r
66 $missing_fields[] = _AT('number_of_students_per_group');
\r
68 if ($total_students == 0) {
\r
69 $msg->addError('GROUP_NO_STUDENTS');
\r
71 $num_groups = ceil($total_students / $num_students_per_group);
\r
74 } else { // number of groups
\r
75 $num_groups = $_POST['num_groups'];
\r
77 if ($num_groups == 0) {
\r
78 $missing_fields[] = _AT('number_of_groups');
\r
80 if ($total_students > 0) {
\r
81 // to uniformly distribute all the groups we place the remaining students
\r
82 // into the first n groups, where n is the number of remaining students.
\r
83 $remainder = $total_students % $num_groups;
\r
85 $num_students_per_group = floor($total_students / $num_groups);
\r
87 $num_students_per_group = $total_students / $num_groups;
\r
90 $num_students_per_group = 0;
\r
95 if ($missing_fields) {
\r
96 $missing_fields = implode(', ', $missing_fields);
\r
97 $msg->addError(array('EMPTY_FIELDS', $missing_fields));
\r
100 if (!$msg->containsErrors()) {
\r
101 $_POST['type_title'] = $addslashes($_POST['type_title']);
\r
102 $_POST['prefix'] = $addslashes($_POST['prefix']);
\r
103 $_POST['description'] = $addslashes($_POST['description']);
\r
105 $sql = "INSERT INTO ".TABLE_PREFIX."groups_types VALUES (NULL, $_SESSION[course_id], '$_POST[type_title]')";
\r
106 $result = mysql_query($sql, $db);
\r
107 $group_type_id = mysql_insert_id($db);
\r
111 for($i=0; $i<$num_groups; $i++) {
\r
112 $group_title = $_POST['prefix'] . ' ' . ($i + 1);
\r
113 $sql = "INSERT INTO ".TABLE_PREFIX."groups VALUES (NULL, $group_type_id, '$group_title', '$_POST[description]', '$modules')";
\r
114 $result = mysql_query($sql, $db);
\r
116 $group_id = mysql_insert_id($db);
\r
117 $_SESSION['groups'][$group_id] = $group_id;
\r
119 // call module init scripts:
\r
120 if (isset($_POST['modules'])) {
\r
121 foreach ($_POST['modules'] as $mod) {
\r
122 $module =& $moduleFactory->getModule($mod);
\r
123 $module->createGroup($group_id);
\r
127 if (isset($_POST['fill'])) {
\r
128 // put students in this group
\r
129 for ($j = $start_index; $j < min(($start_index + $num_students_per_group), $total_students); $j++) {
\r
130 $sql = "INSERT INTO ".TABLE_PREFIX."groups_members VALUES ($group_id, $students[$j])";
\r
131 mysql_query($sql, $db);
\r
136 $sql = "INSERT INTO ".TABLE_PREFIX."groups_members VALUES ($group_id, $students[$start_index])";
\r
137 mysql_query($sql, $db);
\r
144 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
\r
146 header('Location: index.php');
\r
149 $_POST['type_title'] = $stripslashes($_POST['type_title']);
\r
150 $_POST['prefix'] = $stripslashes($_POST['prefix']);
\r
151 $_POST['description'] = $stripslashes($_POST['description']);
\r
155 require(AT_INCLUDE_PATH.'header.inc.php');
\r
156 $sql = "SELECT COUNT(*) AS cnt FROM ".TABLE_PREFIX."course_enrollment WHERE course_id=$_SESSION[course_id] AND approved='y' AND `privileges`&".AT_PRIV_GROUPS."=0";
\r
157 $result = mysql_query($sql, $db);
\r
158 $row = mysql_fetch_assoc($result);
\r
162 <script type="text/javascript">
\r
164 document.form.num_groups.disabled = true;
\r
165 function changer(name1, name2) {
\r
166 document.form[name1].value= '-';
\r
167 document.form[name1].disabled = true;
\r
168 document.form[name2].disabled = false;
\r
170 document.form[name2].value= '';
\r
171 document.form[name2].focus();
\r
176 $savant->assign('row', $row);
\r
177 $savant->display('instructor/groups/create_automatic.tmpl.php');
\r
178 require(AT_INCLUDE_PATH.'footer.inc.php'); ?>