MDL-15103 towards assignment dml conversion

This commit is contained in:
skodak 2008-06-05 10:50:15 +00:00
parent 607d2b2abe
commit 5053f00f33

View file

@ -40,7 +40,7 @@ class assignment_base {
* @param course object, usually null, but if we have it we pass it to save db access * @param course object, usually null, but if we have it we pass it to save db access
*/ */
function assignment_base($cmid='staticonly', $assignment=NULL, $cm=NULL, $course=NULL) { function assignment_base($cmid='staticonly', $assignment=NULL, $cm=NULL, $course=NULL) {
global $COURSE; global $COURSE, $DB;
if ($cmid == 'staticonly') { if ($cmid == 'staticonly') {
//use static functions only! //use static functions only!
@ -61,13 +61,13 @@ class assignment_base {
$this->course = $course; $this->course = $course;
} else if ($this->cm->course == $COURSE->id) { } else if ($this->cm->course == $COURSE->id) {
$this->course = $COURSE; $this->course = $COURSE;
} else if (! $this->course = get_record('course', 'id', $this->cm->course)) { } else if (! $this->course = $DB->get_record('course', array('id'=>$this->cm->course))) {
print_error('invalidid', 'assignment'); print_error('invalidid', 'assignment');
} }
if ($assignment) { if ($assignment) {
$this->assignment = $assignment; $this->assignment = $assignment;
} else if (! $this->assignment = get_record('assignment', 'id', $this->cm->instance)) { } else if (! $this->assignment = $DB->get_record('assignment', array('id'=>$this->cm->instance))) {
print_error('invalidid', 'assignment'); print_error('invalidid', 'assignment');
} }
@ -206,7 +206,7 @@ class assignment_base {
* @param $submission object The submission object or NULL in which case it will be loaded * @param $submission object The submission object or NULL in which case it will be loaded
*/ */
function view_feedback($submission=NULL) { function view_feedback($submission=NULL) {
global $USER, $CFG; global $USER, $CFG, $DB;
require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->libdir.'/gradelib.php');
if (!has_capability('mod/assignment:submit', $this->context, $USER->id, false)) { if (!has_capability('mod/assignment:submit', $this->context, $USER->id, false)) {
@ -234,7 +234,7 @@ class assignment_base {
$graded_by = $grade->usermodified; $graded_by = $grade->usermodified;
/// We need the teacher info /// We need the teacher info
if (!$teacher = get_record('user', 'id', $graded_by)) { if (!$teacher = $DB->get_record('user', array('id'=>$graded_by))) {
print_error('cannotfindteacher'); print_error('cannotfindteacher');
} }
@ -567,7 +567,7 @@ class assignment_base {
} }
if ($commenting) { if ($commenting) {
$commentvalue = trim($_POST['submissioncomment'][$id]); $commentvalue = trim($_POST['submissioncomment'][$id]);
$updatedb = $updatedb || ($submission->submissioncomment != stripslashes($commentvalue)); $updatedb = $updatedb || ($submission->submissioncomment != $commentvalue);
$submission->submissioncomment = $commentvalue; $submission->submissioncomment = $commentvalue;
} else { } else {
unset($submission->submissioncomment); // Don't need to update this. unset($submission->submissioncomment); // Don't need to update this.
@ -588,12 +588,12 @@ class assignment_base {
if (!isset($submission->submissioncomment)) { if (!isset($submission->submissioncomment)) {
$submission->submissioncomment = ''; $submission->submissioncomment = '';
} }
if (!$sid = insert_record('assignment_submissions', $submission)) { if (!$sid = $DB->insert_record('assignment_submissions', $submission)) {
return false; return false;
} }
$submission->id = $sid; $submission->id = $sid;
} else { } else {
if (!update_record('assignment_submissions', $submission)) { if (!$DB->update_record('assignment_submissions', $submission)) {
return false; return false;
} }
} }
@ -775,15 +775,14 @@ class assignment_base {
* This method gets its arguments from the page parameters userid and offset * This method gets its arguments from the page parameters userid and offset
*/ */
function display_submission($extra_javascript = '') { function display_submission($extra_javascript = '') {
global $CFG, $DB;
global $CFG;
require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->libdir.'/gradelib.php');
require_once($CFG->libdir.'/tablelib.php'); require_once($CFG->libdir.'/tablelib.php');
$userid = required_param('userid', PARAM_INT); $userid = required_param('userid', PARAM_INT);
$offset = required_param('offset', PARAM_INT);//offset for where to start looking for student. $offset = required_param('offset', PARAM_INT);//offset for where to start looking for student.
if (!$user = get_record('user', 'id', $userid)) { if (!$user = $DB->get_record('user', array('id'=>$userid))) {
print_error('nousers'); print_error('nousers');
} }
@ -826,8 +825,8 @@ class assignment_base {
s.id AS submissionid, s.grade, s.submissioncomment, s.id AS submissionid, s.grade, s.submissioncomment,
s.timemodified, s.timemarked, s.timemodified, s.timemarked,
COALESCE(SIGN(SIGN(s.timemarked) + SIGN(s.timemarked - s.timemodified)), 0) AS status '; COALESCE(SIGN(SIGN(s.timemarked) + SIGN(s.timemarked - s.timemodified)), 0) AS status ';
$sql = 'FROM '.$CFG->prefix.'user u '. $sql = 'FROM {user} u '.
'LEFT JOIN '.$CFG->prefix.'assignment_submissions s ON u.id = s.userid 'LEFT JOIN {assignment_submissions} s ON u.id = s.userid
AND s.assignment = '.$this->assignment->id.' '. AND s.assignment = '.$this->assignment->id.' '.
'WHERE u.id IN ('.implode(',', $users).') '; 'WHERE u.id IN ('.implode(',', $users).') ';
@ -835,7 +834,7 @@ class assignment_base {
$sort = 'ORDER BY '.$sort.' '; $sort = 'ORDER BY '.$sort.' ';
} }
if (($auser = get_records_sql($select.$sql.$sort, $offset+1, 1)) !== false) { if (($auser = $DB->get_records_sql($select.$sql.$sort, null, $offset+1, 1)) !== false) {
$nextuser = array_shift($auser); $nextuser = array_shift($auser);
/// Calculate user status /// Calculate user status
$nextuser->status = ($nextuser->timemarked > 0) && ($nextuser->timemarked >= $nextuser->timemodified); $nextuser->status = ($nextuser->timemarked > 0) && ($nextuser->timemarked >= $nextuser->timemodified);
@ -871,7 +870,7 @@ class assignment_base {
echo '<tr>'; echo '<tr>';
echo '<td class="picture teacher">'; echo '<td class="picture teacher">';
if ($submission->teacher) { if ($submission->teacher) {
$teacher = get_record('user', 'id', $submission->teacher); $teacher = $DB->get_record('user', array('id'=>$submission->teacher));
} else { } else {
global $USER; global $USER;
$teacher = $USER; $teacher = $USER;
@ -1002,7 +1001,7 @@ class assignment_base {
* Display all the submissions ready for grading * Display all the submissions ready for grading
*/ */
function display_submissions($message='') { function display_submissions($message='') {
global $CFG, $DB, $USER; global $CFG, $DB, $USER, $DB;
require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->libdir.'/gradelib.php');
/* first we check to see if the form has just been submitted /* first we check to see if the form has just been submitted
@ -1153,8 +1152,8 @@ class assignment_base {
s.id AS submissionid, s.grade, s.submissioncomment, s.id AS submissionid, s.grade, s.submissioncomment,
s.timemodified, s.timemarked, s.timemodified, s.timemarked,
COALESCE(SIGN(SIGN(s.timemarked) + SIGN(s.timemarked - s.timemodified)), 0) AS status '; COALESCE(SIGN(SIGN(s.timemarked) + SIGN(s.timemarked - s.timemodified)), 0) AS status ';
$sql = 'FROM '.$CFG->prefix.'user u '. $sql = 'FROM {user} u '.
'LEFT JOIN '.$CFG->prefix.'assignment_submissions s ON u.id = s.userid 'LEFT JOIN {assignment_submissions} s ON u.id = s.userid
AND s.assignment = '.$this->assignment->id.' '. AND s.assignment = '.$this->assignment->id.' '.
'WHERE '.$where.'u.id IN ('.implode(',',$users).') '; 'WHERE '.$where.'u.id IN ('.implode(',',$users).') ';
@ -1167,7 +1166,7 @@ class assignment_base {
$strgrade = get_string('grade'); $strgrade = get_string('grade');
$grademenu = make_grades_menu($this->assignment->grade); $grademenu = make_grades_menu($this->assignment->grade);
if (($ausers = get_records_sql($select.$sql.$sort, $table->get_page_start(), $table->get_page_size())) !== false) { if (($ausers = $DB->get_records_sql($select.$sql.$sort, null, $table->get_page_start(), $table->get_page_size())) !== false) {
$grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, array_keys($ausers)); $grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, array_keys($ausers));
foreach ($ausers as $auser) { foreach ($ausers as $auser) {
$final_grade = $grading_info->items[0]->grades[$auser->id]; $final_grade = $grading_info->items[0]->grades[$auser->id];
@ -1376,7 +1375,7 @@ class assignment_base {
global $CFG, $USER; global $CFG, $USER;
require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->libdir.'/gradelib.php');
if (!$feedback = data_submitted()) { // No incoming data? if (!$feedback = data_submitted(false)) { // No incoming data?
return false; return false;
} }
@ -1420,7 +1419,7 @@ class assignment_base {
// $submission->timemodified = time(); // $submission->timemodified = time();
} }
if (! update_record('assignment_submissions', $submission)) { if (! $DB->update_record('assignment_submissions', $submission)) {
return false; return false;
} }
@ -1444,7 +1443,7 @@ class assignment_base {
require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->libdir.'/gradelib.php');
if (!$formdata = data_submitted()) { if (!$formdata = data_submitted(false)) {
return; return;
} }
@ -1474,23 +1473,23 @@ class assignment_base {
* @return object The submission * @return object The submission
*/ */
function get_submission($userid=0, $createnew=false, $teachermodified=false) { function get_submission($userid=0, $createnew=false, $teachermodified=false) {
global $USER; global $USER, $DB;
if (empty($userid)) { if (empty($userid)) {
$userid = $USER->id; $userid = $USER->id;
} }
$submission = get_record('assignment_submissions', 'assignment', $this->assignment->id, 'userid', $userid); $submission = $DB->get_record('assignment_submissions', array('assignment'=>$this->assignment->id, 'userid'=>$userid));
if ($submission || !$createnew) { if ($submission || !$createnew) {
return $submission; return $submission;
} }
$newsubmission = $this->prepare_new_submission($userid, $teachermodified); $newsubmission = $this->prepare_new_submission($userid, $teachermodified);
if (!insert_record("assignment_submissions", $newsubmission)) { if (!$DB->insert_record("assignment_submissions", $newsubmission)) {
print_error('cannotinsertempty', 'assignment'); print_error('cannotinsertempty', 'assignment');
} }
return get_record('assignment_submissions', 'assignment', $this->assignment->id, 'userid', $userid); return $DB->get_record('assignment_submissions', array('assignment'=>$this->assignment->id, 'userid'=>$userid));
} }
/** /**
@ -1555,13 +1554,13 @@ class assignment_base {
* @param $submission object The submission that has changed * @param $submission object The submission that has changed
*/ */
function email_teachers($submission) { function email_teachers($submission) {
global $CFG; global $CFG, $DB;
if (empty($this->assignment->emailteachers)) { // No need to do anything if (empty($this->assignment->emailteachers)) { // No need to do anything
return; return;
} }
$user = get_record('user', 'id', $submission->userid); $user = $DB->get_record('user', array('id'=>$submission->userid));
if ($teachers = $this->get_graders($user)) { if ($teachers = $this->get_graders($user)) {
@ -1884,7 +1883,7 @@ class assignment_base {
* Reset all submissions * Reset all submissions
*/ */
function reset_userdata($data) { function reset_userdata($data) {
global $CFG; global $CFG, $DB;
require_once($CFG->libdir.'/filelib.php'); require_once($CFG->libdir.'/filelib.php');
if (!count_records('assignment', 'course', $data->courseid, 'assignmenttype', $this->type)) { if (!count_records('assignment', 'course', $data->courseid, 'assignmenttype', $this->type)) {
@ -1898,12 +1897,13 @@ class assignment_base {
if (!empty($data->reset_assignment_submissions)) { if (!empty($data->reset_assignment_submissions)) {
$assignmentssql = "SELECT a.id $assignmentssql = "SELECT a.id
FROM {$CFG->prefix}assignment a FROM {assignment} a
WHERE a.course={$data->courseid} AND a.assignmenttype='{$this->type}'"; WHERE a.course=? AND a.assignmenttype=?";
$params = array($data->courseid, $this->type);
delete_records_select('assignment_submissions', "assignment IN ($assignmentssql)"); $DB->delete_records_select('assignment_submissions', "assignment IN ($assignmentssql)", $params);
if ($assignments = get_records_sql($assignmentssql)) { if ($assignments = $DB->get_records_sql($assignmentssql, $params)) {
foreach ($assignments as $assignmentid=>$unused) { foreach ($assignments as $assignmentid=>$unused) {
fulldelete($CFG->dataroot.'/'.$data->courseid.'/moddata/assignment/'.$assignmentid); fulldelete($CFG->dataroot.'/'.$data->courseid.'/moddata/assignment/'.$assignmentid);
} }
@ -2027,8 +2027,7 @@ function assignment_user_complete($course, $user, $mod, $assignment) {
* Finds all assignment notifications that have yet to be mailed out, and mails them * Finds all assignment notifications that have yet to be mailed out, and mails them
*/ */
function assignment_cron () { function assignment_cron () {
global $CFG, $USER, $DB;
global $CFG, $USER;
/// first execute all crons in plugins /// first execute all crons in plugins
if ($plugins = get_list_of_plugins('mod/assignment/type')) { if ($plugins = get_list_of_plugins('mod/assignment/type')) {
@ -2053,7 +2052,7 @@ function assignment_cron () {
$realuser = clone($USER); $realuser = clone($USER);
foreach ($submissions as $key => $submission) { foreach ($submissions as $key => $submission) {
if (! set_field("assignment_submissions", "mailed", "1", "id", "$submission->id")) { if (! $DB->set_field("assignment_submissions", "mailed", "1", array("id"=>$submission->id))) {
echo "Could not update the mailed field for id $submission->id. Not mailed.\n"; echo "Could not update the mailed field for id $submission->id. Not mailed.\n";
unset($submissions[$key]); unset($submissions[$key]);
} }
@ -2065,12 +2064,12 @@ function assignment_cron () {
echo "Processing assignment submission $submission->id\n"; echo "Processing assignment submission $submission->id\n";
if (! $user = get_record("user", "id", "$submission->userid")) { if (! $user = $DB->get_record("user", array("id"=>$submission->userid))) {
echo "Could not find user $post->userid\n"; echo "Could not find user $post->userid\n";
continue; continue;
} }
if (! $course = get_record("course", "id", "$submission->course")) { if (! $course = $DB->get_record("course", array("id"=>$submission->course))) {
echo "Could not find course $submission->course\n"; echo "Could not find course $submission->course\n";
continue; continue;
} }
@ -2085,7 +2084,7 @@ function assignment_cron () {
continue; continue;
} }
if (! $teacher = get_record("user", "id", "$submission->teacher")) { if (! $teacher = $DB->get_record("user", array("id"=>$submission->teacher))) {
echo "Could not find teacher $submission->teacher\n"; echo "Could not find teacher $submission->teacher\n";
continue; continue;
} }
@ -2146,17 +2145,23 @@ function assignment_cron () {
* @return array array of grades, false if none * @return array array of grades, false if none
*/ */
function assignment_get_user_grades($assignment, $userid=0) { function assignment_get_user_grades($assignment, $userid=0) {
global $CFG; global $CFG, $DB;
$user = $userid ? "AND u.id = $userid" : ""; if ($userid) {
$user = "AND u.id = :userid";
$params = array('userid'=>$userid);
} else {
$user = "";
}
$params['aid'] = $assignment->id;
$sql = "SELECT u.id, u.id AS userid, s.grade AS rawgrade, s.submissioncomment AS feedback, s.format AS feedbackformat, $sql = "SELECT u.id, u.id AS userid, s.grade AS rawgrade, s.submissioncomment AS feedback, s.format AS feedbackformat,
s.teacher AS usermodified, s.timemarked AS dategraded, s.timemodified AS datesubmitted s.teacher AS usermodified, s.timemarked AS dategraded, s.timemodified AS datesubmitted
FROM {$CFG->prefix}user u, {$CFG->prefix}assignment_submissions s FROM {user} u, {assignment_submissions} s
WHERE u.id = s.userid AND s.assignment = $assignment->id WHERE u.id = s.userid AND s.assignment = :aid
$user"; $user";
return get_records_sql($sql); return $DB->get_records_sql($sql, $params);
} }
/** /**
@ -2166,10 +2171,8 @@ function assignment_get_user_grades($assignment, $userid=0) {
* @param int $userid specific user only, 0 mean all * @param int $userid specific user only, 0 mean all
*/ */
function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true) { function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true) {
global $CFG; global $CFG, $DB;
if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once($CFG->libdir.'/gradelib.php');
require_once($CFG->libdir.'/gradelib.php');
}
if ($assignment != null) { if ($assignment != null) {
if ($grades = assignment_get_user_grades($assignment, $userid)) { if ($grades = assignment_get_user_grades($assignment, $userid)) {
@ -2185,17 +2188,17 @@ function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true)
} else { } else {
$sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid $sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid
FROM {$CFG->prefix}assignment a, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m FROM {assignment} a, {course_modules} cm, {modules} m
WHERE m.name='assignment' AND m.id=cm.module AND cm.instance=a.id"; WHERE m.name='assignment' AND m.id=cm.module AND cm.instance=a.id";
if ($rs = get_recordset_sql($sql)) { if ($rs = $DB->get_recordset_sql($sql)) {
while ($assignment = rs_fetch_next_record($rs)) { foreach ($rs as $assignment) {
if ($assignment->grade != 0) { if ($assignment->grade != 0) {
assignment_update_grades($assignment); assignment_update_grades($assignment);
} else { } else {
assignment_grade_item_update($assignment); assignment_grade_item_update($assignment);
} }
} }
rs_close($rs); $rs->close();
} }
} }
} }
@ -2209,9 +2212,7 @@ function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true)
*/ */
function assignment_grade_item_update($assignment, $grades=NULL) { function assignment_grade_item_update($assignment, $grades=NULL) {
global $CFG; global $CFG;
if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once($CFG->libdir.'/gradelib.php');
require_once($CFG->libdir.'/gradelib.php');
}
if (!isset($assignment->courseid)) { if (!isset($assignment->courseid)) {
$assignment->courseid = $assignment->course; $assignment->courseid = $assignment->course;
@ -2264,21 +2265,20 @@ function assignment_grade_item_delete($assignment) {
* @return array of user objects * @return array of user objects
*/ */
function assignment_get_participants($assignmentid) { function assignment_get_participants($assignmentid) {
global $CFG, $DB;
global $CFG;
//Get students //Get students
$students = get_records_sql("SELECT DISTINCT u.id, u.id $students = $DB->get_records_sql("SELECT DISTINCT u.id, u.id
FROM {$CFG->prefix}user u, FROM {user} u,
{$CFG->prefix}assignment_submissions a {assignment_submissions} a
WHERE a.assignment = '$assignmentid' and WHERE a.assignment = ? and
u.id = a.userid"); u.id = a.userid", array($assignmentid));
//Get teachers //Get teachers
$teachers = get_records_sql("SELECT DISTINCT u.id, u.id $teachers = $DB->get_records_sql("SELECT DISTINCT u.id, u.id
FROM {$CFG->prefix}user u, FROM {user} u,
{$CFG->prefix}assignment_submissions a {assignment_submissions} a
WHERE a.assignment = '$assignmentid' and WHERE a.assignment = ? and
u.id = a.teacher"); u.id = a.teacher", array($assignmentid));
//Add teachers to students //Add teachers to students
if ($teachers) { if ($teachers) {
@ -2299,10 +2299,11 @@ function assignment_get_participants($assignmentid) {
* @return boolean True if the scale is used by the assignment * @return boolean True if the scale is used by the assignment
*/ */
function assignment_scale_used($assignmentid, $scaleid) { function assignment_scale_used($assignmentid, $scaleid) {
global $DB;
$return = false; $return = false;
$rec = get_record('assignment','id',$assignmentid,'grade',-$scaleid); $rec = $DB->get_record('assignment', array('id'=>$assignmentid,'grade'=>-$scaleid));
if (!empty($rec) && !empty($scaleid)) { if (!empty($rec) && !empty($scaleid)) {
$return = true; $return = true;
@ -2319,7 +2320,9 @@ function assignment_scale_used($assignmentid, $scaleid) {
* @return boolean True if the scale is used by any assignment * @return boolean True if the scale is used by any assignment
*/ */
function assignment_scale_used_anywhere($scaleid) { function assignment_scale_used_anywhere($scaleid) {
if ($scaleid and record_exists('assignment', 'grade', -$scaleid)) { global $DB;
if ($scaleid and $DB->record_exists('assignment', array('grade'=>-$scaleid))) {
return true; return true;
} else { } else {
return false; return false;
@ -2339,25 +2342,26 @@ function assignment_scale_used_anywhere($scaleid) {
* @return boolean Always returns true * @return boolean Always returns true
*/ */
function assignment_refresh_events($courseid = 0) { function assignment_refresh_events($courseid = 0) {
global $DB;
if ($courseid == 0) { if ($courseid == 0) {
if (! $assignments = get_records("assignment")) { if (! $assignments = $DB->get_records("assignment")) {
return true; return true;
} }
} else { } else {
if (! $assignments = get_records("assignment", "course", $courseid)) { if (! $assignments = $DB->get_records("assignment", array("course"=>$courseid))) {
return true; return true;
} }
} }
$moduleid = get_field('modules', 'id', 'name', 'assignment'); $moduleid = $DB->get_field('modules', 'id', array('name'=>'assignment'));
foreach ($assignments as $assignment) { foreach ($assignments as $assignment) {
$event = NULL; $event = NULL;
$event->name = addslashes($assignment->name); $event->name = $assignment->name;
$event->description = addslashes($assignment->description); $event->description = $assignment->description;
$event->timestart = $assignment->timedue; $event->timestart = $assignment->timedue;
if ($event->id = get_field('event', 'id', 'modulename', 'assignment', 'instance', $assignment->id)) { if ($event->id = $DB->get_field('event', 'id', array('modulename'=>'assignment', 'instance'=>$assignment->id))) {
update_event($event); update_event($event);
} else { } else {
@ -2368,7 +2372,7 @@ function assignment_refresh_events($courseid = 0) {
$event->instance = $assignment->id; $event->instance = $assignment->id;
$event->eventtype = 'due'; $event->eventtype = 'due';
$event->timeduration = 0; $event->timeduration = 0;
$event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $assignment->id); $event->visible = $DB->get_field('course_modules', 'visible', array('module'=>$moduleid, 'instance'=>$assignment->id));
add_event($event); add_event($event);
} }
@ -2382,21 +2386,21 @@ function assignment_refresh_events($courseid = 0) {
* This is used by the recent activity block * This is used by the recent activity block
*/ */
function assignment_print_recent_activity($course, $viewfullnames, $timestart) { function assignment_print_recent_activity($course, $viewfullnames, $timestart) {
global $CFG, $USER; global $CFG, $USER, $DB;
// do not use log table if possible, it may be huge // do not use log table if possible, it may be huge
if (!$submissions = get_records_sql("SELECT asb.id, asb.timemodified, cm.id AS cmid, asb.userid, if (!$submissions = get_records_sql("SELECT asb.id, asb.timemodified, cm.id AS cmid, asb.userid,
u.firstname, u.lastname, u.email, u.picture u.firstname, u.lastname, u.email, u.picture
FROM {$CFG->prefix}assignment_submissions asb FROM {assignment_submissions} asb
JOIN {$CFG->prefix}assignment a ON a.id = asb.assignment JOIN {assignment} a ON a.id = asb.assignment
JOIN {$CFG->prefix}course_modules cm ON cm.instance = a.id JOIN {course_modules} cm ON cm.instance = a.id
JOIN {$CFG->prefix}modules md ON md.id = cm.module JOIN {modules} md ON md.id = cm.module
JOIN {$CFG->prefix}user u ON u.id = asb.userid JOIN {user} u ON u.id = asb.userid
WHERE asb.timemodified > $timestart AND WHERE asb.timemodified > ? AND
a.course = {$course->id} AND a.course = ? AND
md.name = 'assignment' md.name = 'assignment'
ORDER BY asb.timemodified ASC")) { ORDER BY asb.timemodified ASC", array($timestart, $course->id))) {
return false; return false;
} }
@ -2475,42 +2479,47 @@ function assignment_print_recent_activity($course, $viewfullnames, $timestart) {
* Returns all assignments since a given time in specified forum. * Returns all assignments since a given time in specified forum.
*/ */
function assignment_get_recent_mod_activity(&$activities, &$index, $timestart, $courseid, $cmid, $userid=0, $groupid=0) { function assignment_get_recent_mod_activity(&$activities, &$index, $timestart, $courseid, $cmid, $userid=0, $groupid=0) {
global $CFG, $COURSE, $USER, $DB;
global $CFG, $COURSE, $USER;
if ($COURSE->id == $courseid) { if ($COURSE->id == $courseid) {
$course = $COURSE; $course = $COURSE;
} else { } else {
$course = get_record('course', 'id', $courseid); $course = $DB->get_record('course', array('id'=>$courseid));
} }
$modinfo =& get_fast_modinfo($course); $modinfo =& get_fast_modinfo($course);
$cm = $modinfo->cms[$cmid]; $cm = $modinfo->cms[$cmid];
$params = array();
if ($userid) { if ($userid) {
$userselect = "AND u.id = $userid"; $userselect = "AND u.id = :userid";
$params['userid'] = $userid;
} else { } else {
$userselect = ""; $userselect = "";
} }
if ($groupid) { if ($groupid) {
$groupselect = "AND gm.groupid = $groupid"; $groupselect = "AND gm.groupid = :groupid";
$groupjoin = "JOIN {$CFG->prefix}groups_members gm ON gm.userid=u.id"; $groupjoin = "JOIN {groups_members} gm ON gm.userid=u.id";
$params['groupid'] = $groupid;
} else { } else {
$groupselect = ""; $groupselect = "";
$groupjoin = ""; $groupjoin = "";
} }
if (!$submissions = get_records_sql("SELECT asb.id, asb.timemodified, asb.userid, $params['cminstance'] = $cm->instance;
u.firstname, u.lastname, u.email, u.picture $params['timestart'] = $timestart;
FROM {$CFG->prefix}assignment_submissions asb
JOIN {$CFG->prefix}assignment a ON a.id = asb.assignment if (!$submissions = $DB->get_records_sql("SELECT asb.id, asb.timemodified, asb.userid,
JOIN {$CFG->prefix}user u ON u.id = asb.userid u.firstname, u.lastname, u.email, u.picture
$groupjoin FROM {assignment_submissions} asb
WHERE asb.timemodified > $timestart AND a.id = $cm->instance JOIN {assignment} a ON a.id = asb.assignment
$userselect $groupselect JOIN {user} u ON u.id = asb.userid
ORDER BY asb.timemodified ASC")) { $groupjoin
WHERE asb.timemodified > :timestart AND a.id = :cminstance
$userselect $groupselect
ORDER BY asb.timemodified ASC", $params)) {
return; return;
} }
@ -2646,12 +2655,11 @@ function assignment_print_recent_mod_activity($activity, $courseid, $detail, $mo
* @return array with assignment name and user firstname and lastname * @return array with assignment name and user firstname and lastname
*/ */
function assignment_log_info($log) { function assignment_log_info($log) {
global $CFG; global $CFG, $DB;
return get_record_sql("SELECT a.name, u.firstname, u.lastname
FROM {$CFG->prefix}assignment a, return $DB->get_record_sql("SELECT a.name, u.firstname, u.lastname
{$CFG->prefix}user u FROM {assignment} a, {user} u
WHERE a.id = '$log->info' WHERE a.id = ? AND u.id = ?", array($log->info, $log->userid));
AND u.id = '$log->userid'");
} }
/** /**
@ -2660,28 +2668,15 @@ function assignment_log_info($log) {
* @return array * @return array
*/ */
function assignment_get_unmailed_submissions($starttime, $endtime) { function assignment_get_unmailed_submissions($starttime, $endtime) {
global $CFG, $DB;
global $CFG; return $DB->get_records_sql("SELECT s.*, a.course, a.name
FROM {assignment_submissions} s,
return get_records_sql("SELECT s.*, a.course, a.name {assignment} a
FROM {$CFG->prefix}assignment_submissions s, WHERE s.mailed = 0
{$CFG->prefix}assignment a AND s.timemarked <= ?
WHERE s.mailed = 0 AND s.timemarked >= ?
AND s.timemarked <= $endtime AND s.assignment = a.id", array($endtime, $starttime));
AND s.timemarked >= $starttime
AND s.assignment = a.id");
/* return get_records_sql("SELECT s.*, a.course, a.name
FROM {$CFG->prefix}assignment_submissions s,
{$CFG->prefix}assignment a,
{$CFG->prefix}user_students us
WHERE s.mailed = 0
AND s.timemarked <= $endtime
AND s.timemarked >= $starttime
AND s.assignment = a.id
AND s.userid = us.userid
AND a.course = us.course");
*/
} }
/** /**
@ -2757,15 +2752,6 @@ function assignment_get_all_submissions($assignment, $sort="", $dir="DESC") {
AND a.assignment = '$assignment->id' AND a.assignment = '$assignment->id'
ORDER BY $sort"); ORDER BY $sort");
/* return get_records_sql("SELECT a.*
FROM {$CFG->prefix}assignment_submissions a,
{$CFG->prefix}user_students s,
{$CFG->prefix}user u
WHERE a.userid = s.userid
AND u.id = a.userid
AND $select a.assignment = '$assignment->id'
ORDER BY $sort");
*/
} }
/** /**