Update of /cvsroot/aimmath/moodle/mod/math_assignment
In directory sc8-pr-cvs1:/tmp/cvs-serv29576/mod/math_assignment
Modified Files:
index.php lib.php version.php view.php
Added Files:
email.php
Log Message:
Added email code including a new page and a cron job.
--- NEW FILE: email.php ---
<?PHP // $Id: email.php,v 1.1 2003/09/25 17:15:41 madalex Exp $
/// This page emails all the students their grades and sends a complete list to the secretaries
/// It asks for confirmation from the user that the scripts have been made available
require_once("../../config.php");
require_once("lib.php");
require_once("../../user/lib.php");
require_variable($id); // course module id
if (! $site = get_site()) {
redirect("$CFG->wwwroot/$CFG->admin/index.php");
}
if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect");
}
if (! $course = get_record("course", "id", $cm->course)) {
error("Course is misconfigured");
}
if (! $math_assignment = get_record("math_assignment", "id", $cm->instance)) {
error("Course module is incorrect");
}
require_login($course->id);
add_to_log($course->id, "math_assignment", "email", "email.php?id=$math_assignment->id", "");
if (!isteacher($course->id)) {
error(get_string("notteacher", "math_assignment"));
}
if (isset($go)) {
if (strcasecmp($go, "yes") == 0) {
$students = math_assignment_get_grades($math_assignment);
if ($students) {
foreach ($students as $student) {
// send email to the student + add to main email
}
}
// send email to secretaries
redirect("view.php?id=$cm->id", get_string("emailssent", "math_assignment"), 1);
}
}
/// Print the page header
if ($course->category) {
$navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->";
}
else
$navigation = "";
$strmath_assignments = get_string("modulenameplural", "math_assignment");
$strmath_assignment = get_string("modulename", "math_assignment");
$stremailstudents = get_string("emailstudents", "math_assignment");
print_header("$course->shortname: $math_assignment->name", "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strmath_assignments</a> -> <a href=\"view.php?id=$cm->id\">$math_assignment->name</a> -> $stremailstudents",
"", "", true, update_module_button($cm->id, $course->id, $strmath_assignment), navmenu($course, $cm));
/// Print the main part of the page
print_heading_with_help($stremailstudents, "emailstudents", "math_assignment");
notice_yesno(nl2br(get_string("emailnotice", "math_assignment")), "email.php?id=$cm->id&go=yes", "view.php?id=$cm->id");
?>
<?php
print_footer($course);
?>
Index: index.php
===================================================================
RCS file: /cvsroot/aimmath/moodle/mod/math_assignment/index.php,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** index.php 25 Sep 2003 15:32:55 -0000 1.6
--- index.php 25 Sep 2003 17:15:41 -0000 1.7
***************
*** 155,169 ****
$grade->aimcomment = "";
}
! if ($grade->papergrade >= 0)
$papergrade = "$grade->papergrade / $math_assignment->papergrade";
else
$papergrade = "";
! if ($grade->aimgrade >= 0)
! $aimgrade = "$grade->aimgrade / $math_assignment->aimgrade";
else
$aimgrade = "";
$maxgrade = $math_assignment->papergrade + $math_assignment->aimgrade;
! if ($grade->aimoverride)
! $aimgrade .= " (" . get_string("gradeoverride", "math_assignment") . ")";
if ($course->format == "weeks" or $course->format == "topics")
$row = array ($math_assignment->section, $link);
--- 155,175 ----
$grade->aimcomment = "";
}
! if ($grade->papergrade >= 0 && $math_assignment->papergrade > 0)
$papergrade = "$grade->papergrade / $math_assignment->papergrade";
else
$papergrade = "";
! if ($math_assignment->aimgrade > 0) {
! if ($grade->aimgrade >= 0)
! $aimgrade = "$grade->aimgrade / $math_assignment->aimgrade";
! else
! $aimgrade = "";
! if ($grade->aimoverride)
! $aimgrade .= " (" . get_string("gradeoverride", "math_assignment") . ")";
! }
else
$aimgrade = "";
+ $totalgrade = math_assignment_total_grade($math_assignment, $grade);
$maxgrade = $math_assignment->papergrade + $math_assignment->aimgrade;
! $totalgrade = "$totalgrade / $maxgrade";
if ($course->format == "weeks" or $course->format == "topics")
$row = array ($math_assignment->section, $link);
***************
*** 178,182 ****
else
$solutions = "";
! array_push($row, userdate($math_assignment->timedue, "", 99, false), $proburl ? "<a href=\"$proburl\" target=\"problems\">$strviewproblems</a>" : "", $solutions, $papergrade, $aimgrade);
$table->data[] = $row;
}
--- 184,188 ----
else
$solutions = "";
! array_push($row, userdate($math_assignment->timedue, "", 99, false), $proburl ? "<a href=\"$proburl\" target=\"problems\">$strviewproblems</a>" : "", $solutions, $papergrade, $aimgrade, $totalgrade);
$table->data[] = $row;
}
Index: lib.php
===================================================================
RCS file: /cvsroot/aimmath/moodle/mod/math_assignment/lib.php,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** lib.php 25 Sep 2003 15:32:55 -0000 1.20
--- lib.php 25 Sep 2003 17:15:41 -0000 1.21
***************
*** 175,178 ****
--- 175,190 ----
global $CFG;
+ $math_assignments = get_records_sql("SELECT `id`,`course`,`name`,`papergrade`,`aimgrade`,`timedue` FROM `{$CFG->prefix}math_assignment` WHERE `papersheetsreturned` = '0' AND `timedue` < NOW() AND `papergrade` = '0'");
+ if ($math_assignments) {
+ foreach ($math_assignments as $math_assignment) {
+ // build the email
+ $students = math_assignment_get_grades($math_assignment);
+ if ($students) {
+ foreach ($students as $student) {
+ }
+ // send it to the secretaries
+ }
+ }
+ }
return true;
}
***************
*** 184,188 ****
$math_assignment = get_record("math_assignment", "id", $math_assignmentid);
$return->maxgrade = $math_assignment->papergrade+ $math_assignment->aimgrade;
! $return->grades = get_records_menu("math_assignment_grades", "assignment", $math_assignmentid, "", "userid,least(greatest(papergrade,0), $math_assignment->papergrade)+least(greatest(aimgrade,0), $math_assignment->aimgrade)");
return $return;
}
--- 196,202 ----
$math_assignment = get_record("math_assignment", "id", $math_assignmentid);
$return->maxgrade = $math_assignment->papergrade+ $math_assignment->aimgrade;
! $return->grades = math_assignment_get_grades($math_assignment, "id", "asc");
! if ($return->grades)
! array_walk($return->grades, create_function('&$val','$val = $val->totalgrade;'));
return $return;
}
***************
*** 771,774 ****
--- 785,846 ----
}
}
+ }
+
+ function math_assignment_get_grades($math_assignment, $sort="lastname", $sortdir="asc") {
+ // returns an array of grades indexed by userid for all students in the course
+
+ global $CFG;
+
+ switch(strtolower($CFG->dbtype)) {
+ case 'mysql':
+ if (strcasecmp($sort, "totalgrade") == 0)
+ $sortsql = "totalgrade $sortdir";
+ else
+ $sortsql = "u.$sort $sortdir";
+ $students = get_records_sql("SELECT s.userid, u.firstname, u.lastname, u.picture, g.papergrade, g.aimgrade, g.aimoverride, g.aimcomment, least(greatest(g.papergrade,0), $math_assignment->papergrade)+least(greatest(g.aimgrade,0), $math_assignment->aimgrade) AS totalgrade FROM {$CFG->prefix}user_students s LEFT JOIN {$CFG->prefix}user u ON s.course = '$math_assignment->course' AND u.id = s.userid LEFT JOIN {$CFG->prefix}math_assignment_grades g ON g.assignment = '$math_assignment->id' AND g.userid = s.userid WHERE u.deleted = '0' ORDER BY $sortsql");
+ break;
+ default:
+ // emulate
+ $students = get_records_sql("SELECT userid,userid FROM {$CFG->prefix}user_students WHERE course = '$math_assignment->course'");
+ if ($students) {
+ foreach ($students as $key => $student) {
+ if ($user = get_record_sql("SELECT firstname, lastname, picture FROM {$CFG->prefix}user WHERE id = '$key' AND deleted = '0'")) {
+ $students[$key]->firstname = $user->firstname;
+ $students[$key]->lastname = $user->lastname;
+ $students[$key]->picture = $user->picture;
+ $grade = get_record_sql("SELECT papergrade, aimgrade, aimoverride, aimcomment FROM {$CFG->prefix}math_assignment_grades WHERE assignment = '$math_assignment->id' and userid = '$key'");
+ if ($grade) {
+ $students[$key]->papergrade = $grade->papergrade;
+ $students[$key]->aimgrade = $grade->aimgrade;
+ $students[$key]->aimoverride = $grade->aimoverride ;
+ $students[$key]->aimcomment = $grade->aimcomment;
+ $students[$key]->totalgrade = math_assignment_total_grade($math_assignment, $grade);
+ }
+ else {
+ $students[$key]->papergrade = -1;
+ $students[$key]->aimgrade = -1;
+ $students[$key]->aimoverride = 0 ;
+ $students[$key]->aimcomment = "";
+ $students[$key]->totalgrade = 0;
+ }
+ }
+ else {
+ // assume it failed because deleted was not zero
+ unset($students[$key]);
+ }
+ }
+ // sort
+ if (strcasecmp($sortdir, "desc") == 0)
+ $mult = -1;
+ else
+ $mult = 1;
+ if (strcasecmp($sort, "id") == 0)
+ uksort($students, create_function('$a, $b', 'return (($a > $b) ? 1 : -1) * ' . $mult . ';'));
+ else
+ uasort($students, create_function('$a, $b', 'return (($a->' . $sort . ' > $b->' . $sort . ') ? 1 : -1) * ' . $mult . ';'));
+ }
+ break;
+ }
+ return $students;
}
Index: version.php
===================================================================
RCS file: /cvsroot/aimmath/moodle/mod/math_assignment/version.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** version.php 25 Sep 2003 15:02:23 -0000 1.9
--- version.php 25 Sep 2003 17:15:41 -0000 1.10
***************
*** 7,11 ****
$module->version = 2003092516; // The (date) version of this module
! $module->cron = 0; // How often should cron check this module (seconds)?
?>
--- 7,11 ----
$module->version = 2003092516; // The (date) version of this module
! $module->cron = 1200; // How often should cron check this module (seconds)?
?>
Index: view.php
===================================================================
RCS file: /cvsroot/aimmath/moodle/mod/math_assignment/view.php,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** view.php 25 Sep 2003 15:02:24 -0000 1.15
--- view.php 25 Sep 2003 17:15:41 -0000 1.16
***************
*** 89,139 ****
// Get a list of students for this course including grades
! switch(strtolower($CFG->dbtype)) {
! case 'mysql':
! if (strcasecmp($sort, "totalgrade") == 0)
! $sortsql = "totalgrade $sortdir";
! else
! $sortsql = "u.$sort $sortdir";
! $students = get_records_sql("SELECT s.userid, u.firstname, u.lastname, u.picture, g.papergrade, g.aimgrade, g.aimoverride, g.aimcomment, least(greatest(g.papergrade,0), $math_assignment->papergrade)+least(greatest(g.aimgrade,0), $math_assignment->aimgrade) AS totalgrade FROM {$CFG->prefix}user_students s LEFT JOIN {$CFG->prefix}user u ON s.course = '$course->id' AND u.id = s.userid LEFT JOIN {$CFG->prefix}math_assignment_grades g ON g.assignment = '$math_assignment->id' AND g.userid = s.userid WHERE u.deleted = '0' ORDER BY $sortsql");
! break;
! default:
! // emulate
! $students = get_records_sql("SELECT userid,userid FROM {$CFG->prefix}user_students WHERE course = '$course->id'");
! if ($students) {
! foreach ($students as $key => $student) {
! if ($user = get_record_sql("SELECT firstname, lastname, picture FROM {$CFG->prefix}user WHERE id = '$key' AND deleted = '0'")) {
! $students[$key]->firstname = $user->firstname;
! $students[$key]->lastname = $user->lastname;
! $students[$key]->picture = $user->picture;
! $grade = get_record_sql("SELECT papergrade, aimgrade, aimoverride, aimcomment FROM {$CFG->prefix}math_assignment_grades WHERE assignment = '$math_assignment->id' and userid = '$key'");
! if ($grade) {
! $students[$key]->papergrade = $grade->papergrade;
! $students[$key]->aimgrade = $grade->aimgrade;
! $students[$key]->aimoverride = $grade->aimoverride ;
! $students[$key]->aimcomment = $grade->aimcomment;
! $students[$key]->totalgrade = math_assignment_total_grade($math_assignment, $grade);
! }
! else {
! $students[$key]->papergrade = -1;
! $students[$key]->aimgrade = -1;
! $students[$key]->aimoverride = 0 ;
! $students[$key]->aimcomment = "";
! $students[$key]->totalgrade = 0;
! }
! }
! else {
! // assume it failed because deleted was not zero
! unset($students[$key]);
! }
! }
! // sort
! if (strcasecmp($sortdir, "desc") == 0)
! $mult = -1;
! else
! $mult = 1;
! uasort($students, create_function('$a, $b', 'return (($a->' . $sort . ' > $b->' . $sort . ') ? 1 : -1) * ' . $mult . ';'));
! }
! break;
! }
if (!$students) {
print_header("$course->shortname: $math_assignment->name", "$course->fullname",
--- 89,93 ----
// Get a list of students for this course including grades
! $students = math_assignment_get_grades($math_assignment, $sort, $sortdir);
if (!$students) {
print_header("$course->shortname: $math_assignment->name", "$course->fullname",
|