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 $page = 'gradebook';
\r
17 define('AT_INCLUDE_PATH', '../../../include/');
\r
18 require_once(AT_INCLUDE_PATH.'vitals.inc.php');
\r
19 authenticate(AT_PRIV_GRADEBOOK);
\r
21 require_once("lib/gradebook.inc.php");
\r
23 // Checks if the given test has students taken it more than once, if has, don't add
\r
24 // print feedback, otherwise, add this test into gradebook.
\r
25 function add_test($test_id, $title)
\r
31 $studs_take_num = get_studs_take_more_than_once($_SESSION["course_id"], $test_id);
\r
33 foreach ($studs_take_num as $member_id => $num)
\r
35 if ($no_error) $no_error = false;
\r
36 $error_msg .= get_display_name($member_id) . ": " . $num . " times<br>";
\r
41 $f = array('ADD_TEST_INTO_GRADEBOOK',
\r
44 $msg->addFeedback($f);
\r
47 if ($no_error) // add into gradebook
\r
49 $_POST["selected_grade_scale_id"] = intval($_POST["selected_grade_scale_id"]);
\r
50 $sql_insert = "INSERT INTO ".TABLE_PREFIX."gradebook_tests (id, type, grade_scale_id)
\r
51 VALUES (". $test_id. ", 'ATutor Test', ".$_POST["selected_grade_scale_id"].")";
\r
52 $result_insert = mysql_query($sql_insert, $db) or die(mysql_error());
\r
56 function add_assignment($assignment_id)
\r
59 $_POST["selected_grade_scale_id"] = intval($_POST["selected_grade_scale_id"]);
\r
61 $sql_insert = "INSERT INTO ".TABLE_PREFIX."gradebook_tests (id, type, grade_scale_id)
\r
62 VALUES (". $assignment_id. ", 'ATutor Assignment', ".$_POST["selected_grade_scale_id"].")";
\r
63 $result_insert = mysql_query($sql_insert, $db) or die(mysql_error());
\r
66 if (isset($_POST['cancel']))
\r
68 $msg->addFeedback('CANCELLED');
\r
69 header('Location: gradebook_tests.php');
\r
72 else if (isset($_POST['addATutorTest']))
\r
74 if (preg_match('/^at_(.*)$/', $_POST["id"], $matches) > 0) // add atutor test
\r
76 if ($matches[1] == 0) // add all applicable tests
\r
78 $sql = "SELECT * FROM ".TABLE_PREFIX."tests t".
\r
79 " WHERE course_id=".$_SESSION["course_id"].
\r
80 " AND num_takes = 1".
\r
81 " AND NOT EXISTS (SELECT 1".
\r
82 " FROM ".TABLE_PREFIX."gradebook_tests g".
\r
83 " WHERE g.id = t.test_id".
\r
84 " AND g.type='ATutor Test')";
\r
85 $result = mysql_query($sql, $db) or die(mysql_error());
\r
87 while ($row = mysql_fetch_assoc($result))
\r
89 add_test($row["test_id"], $row["title"]);
\r
92 else // add one atutor test
\r
94 $sql = "SELECT * FROM ".TABLE_PREFIX."tests t".
\r
95 " WHERE test_id=".$matches[1];
\r
96 $result = mysql_query($sql, $db) or die(mysql_error());
\r
97 $row = mysql_fetch_assoc($result);
\r
99 add_test($matches[1], $row["title"]);
\r
102 else if (preg_match('/^aa_(.*)$/', $_POST["id"], $matches) > 0) // add atutor test
\r
104 if ($matches[1] == 0) // add all applicable tests
\r
106 $sql = "SELECT * FROM ".TABLE_PREFIX."assignments a".
\r
107 " WHERE course_id=".$_SESSION["course_id"].
\r
108 " AND NOT EXISTS (SELECT 1".
\r
109 " FROM ".TABLE_PREFIX."gradebook_tests g".
\r
110 " WHERE g.id = a.assignment_id".
\r
111 " AND g.type='ATutor Assignment')";
\r
112 $result = mysql_query($sql, $db) or die(mysql_error());
\r
114 while ($row = mysql_fetch_assoc($result))
\r
116 add_assignment($row["assignment_id"]);
\r
119 else // add one test_id
\r
121 add_assignment($matches[1]);
\r
125 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
\r
126 header('Location: gradebook_tests.php');
\r
129 else if (isset($_POST['addExternalTest']))
\r
131 $missing_fields = array();
\r
133 if ($_POST['title'] == '') {
\r
134 $missing_fields[] = _AT('title');
\r
137 if ($missing_fields) {
\r
138 $missing_fields = implode(', ', $missing_fields);
\r
139 $msg->addError(array('EMPTY_FIELDS', $missing_fields));
\r
142 if (!$msg->containsErrors())
\r
144 $_POST["year_due"] = intval($_POST["year_due"]);
\r
145 $_POST["month_due"] = intval($_POST["month_due"]);
\r
146 $_POST["day_due"] = intval($_POST["day_due"]);
\r
147 $_POST["hour_due"] = intval($_POST["hour_due"]);
\r
148 $_POST["min_due"] = intval($_POST["min_due"]);
\r
149 $_POST["title"] = $addslashes($_POST["title"]);
\r
150 $_POST["selected_grade_scale_id"] = intval($_POST["selected_grade_scale_id"]);
\r
152 if ($_POST["has_due_date"] == 'true')
\r
153 $date_due = $_POST["year_due"]. '-' .str_pad ($_POST["month_due"], 2, "0", STR_PAD_LEFT). '-' .str_pad ($_POST["day_due"], 2, "0", STR_PAD_LEFT). ' '.str_pad ($_POST["hour_due"], 2, "0", STR_PAD_LEFT). ':' .str_pad ($_POST["min_due"], 2, "0", STR_PAD_LEFT) . ':00';
\r
155 $sql_insert = "INSERT INTO ".TABLE_PREFIX."gradebook_tests (course_id, type, title, due_date, grade_scale_id)
\r
156 VALUES (".$_SESSION["course_id"].", 'External', '". $_POST["title"]. "', '".$date_due . "', ".$_POST["selected_grade_scale_id"].")";
\r
157 $result_insert = mysql_query($sql_insert, $db) or die(mysql_error());
\r
159 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
\r
160 header('Location: gradebook_tests.php');
\r
165 $onload .= ' disable_dates (true, \'_due\');';
\r
166 require(AT_INCLUDE_PATH.'header.inc.php');
\r
169 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
\r
170 <div class="input-form">
\r
171 <fieldset class="group_form"><legend class="group_form"><?php echo _AT('add_atutor_test'); ?></legend>
\r
174 <p><?php echo _AT('add_atutor_test_info'); ?></p>
\r
178 // list of atutor tests that can be added into gradebook.
\r
179 // These tests can only be taken once and are not in gradebook yet
\r
180 // note: surveys are excluded by checking if question weights are defined
\r
181 $sql_at = "SELECT * FROM ".TABLE_PREFIX."tests t".
\r
182 " WHERE course_id=".$_SESSION["course_id"].
\r
183 " AND num_takes = 1".
\r
184 " AND NOT EXISTS (SELECT 1".
\r
185 " FROM ".TABLE_PREFIX."gradebook_tests g".
\r
186 " WHERE g.id = t.test_id".
\r
187 " AND g.type='ATutor Test')".
\r
188 " AND test_id IN (SELECT test_id FROM ".TABLE_PREFIX."tests_questions_assoc ".
\r
189 " GROUP BY test_id ".
\r
190 " HAVING sum(weight) > 0) ".
\r
192 $result_at = mysql_query($sql_at, $db) or die(mysql_error());
\r
194 $sql_aa = "SELECT * FROM ".TABLE_PREFIX."assignments a".
\r
195 " WHERE course_id=".$_SESSION["course_id"].
\r
196 " AND NOT EXISTS (SELECT 1".
\r
197 " FROM ".TABLE_PREFIX."gradebook_tests g".
\r
198 " WHERE g.id = a.assignment_id".
\r
199 " AND g.type='ATutor Assignment')".
\r
201 $result_aa = mysql_query($sql_aa, $db) or die(mysql_error());
\r
203 if (mysql_num_rows($result_at) == 0 && mysql_num_rows($result_aa) == 0)
\r
205 echo _AT('none_found');
\r
209 echo ' <div class="row">'."\n\r";
\r
210 echo ' <label for="select_tid">'. _AT("title") .'</label><br />'."\n\r";
\r
211 echo ' <select name="id" id="select_tid">'."\n\r";
\r
213 if (mysql_num_rows($result_aa) > 0)
\r
215 echo ' <optgroup label="'. _AT('assignments') .'">'."\n\r";
\r
216 echo ' <option value="aa_0">'._AT('all_atutor_assignments').'</option>'."\n\r";
\r
218 while ($row_aa = mysql_fetch_assoc($result_aa))
\r
220 echo ' <option value="aa_'.$row_aa[assignement_id].'">'.$row_aa[title].'</option>'."\n\r";
\r
222 echo ' </optgroup>'."\n\r";
\r
225 if (mysql_num_rows($result_at) > 0)
\r
227 echo ' <optgroup label="'. _AT('tests') .'">'."\n\r";
\r
228 echo ' <option value="at_0">'._AT('all_atutor_tests').'</option>'."\n\r";
\r
230 while ($row_at = mysql_fetch_assoc($result_at))
\r
232 echo ' <option value="at_'.$row_at[test_id].'">'.$row_at[title].'</option>'."\n\r";
\r
234 echo ' </optgroup>'."\n\r";
\r
237 echo ' </select>'."\n\r";
\r
238 echo ' </div>'."\n\r";
\r
242 <label for="selected_grade_scale_id"><?php echo _AT('grade_scale'); ?></label><br />
\r
243 <?php print_grade_scale_selectbox($_POST["selected_grade_scale_id"]); ?>
\r
246 <div class="row buttons">
\r
247 <input type="submit" name="addATutorTest" value="<?php echo _AT('add'); ?>" />
\r
248 <input type="submit" name="cancel" value="<?php echo _AT('cancel'); ?>" />
\r
258 <form method="post" name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>">
\r
259 <div class="input-form">
\r
260 <fieldset class="group_form"><legend class="group_form"><?php echo _AT('add_external_test'); ?></legend>
\r
263 <span class="required" title="<?php echo _AT('required_field'); ?>">*</span><label for="title"><?php echo _AT('title'); ?></label><br />
\r
264 <input type="text" name="title" id="title" size="30" value="<?php echo AT_print($_POST['title'], 'input.title'); ?>" />
\r
268 <label for="selected_grade_scale_id1"><?php echo _AT('grade_scale'); ?></label><br />
\r
269 <?php print_grade_scale_selectbox($_POST["selected_grade_scale_id"], "selected_grade_scale_id1"); ?>
\r
273 <?php echo _AT('due_date'); ?><br />
\r
274 <input type="radio" name="has_due_date" value="false" id="noduedate" checked="checked"
\r
275 onfocus="disable_dates (true, '_due');" />
\r
276 <label for="noduedate" title="<?php echo _AT('due_date'). ': '. _AT('none'); ?>"><?php echo _AT('none'); ?></label><br />
\r
278 <input type="radio" name="has_due_date" value="true" id="hasduedate" onfocus="disable_dates (false, '_due');" />
\r
279 <label for="hasduedate" title="<?php echo _AT('due_date') ?>"><?php echo _AT('date'); ?></label>
\r
282 $today = getdate();
\r
283 $today_day = $today['mday'];
\r
284 $today_mon = $today['mon'];
\r
285 $today_year = $today['year'];
\r
286 $today_hour = '12';
\r
290 require(AT_INCLUDE_PATH.'html/release_date.inc.php');
\r
294 <div class="row buttons">
\r
295 <input type="submit" name="addExternalTest" value="<?php echo _AT('add'); ?>" />
\r
296 <input type="submit" name="cancel" value="<?php echo _AT('cancel'); ?>" />
\r
304 <script language="javascript" type="text/javascript">
\r
305 function disable_dates (state, name) {
\r
306 document.form['day' + name].disabled=state;
\r
307 document.form['month' + name].disabled=state;
\r
308 document.form['year' + name].disabled=state;
\r
309 document.form['hour' + name].disabled=state;
\r
310 document.form['min' + name].disabled=state;
\r
314 <?php require (AT_INCLUDE_PATH.'footer.inc.php'); ?>
\r