Merge branch 'MDL-31987_assignment_m21' of git://github.com/rwijaya/moodle into MOODLE_21_STABLE
This commit is contained in:
@@ -157,6 +157,42 @@ function xmldb_assignment_upgrade($oldversion) {
|
||||
// Moodle v2.1.0 release upgrade line
|
||||
// Put any upgrade step following this
|
||||
|
||||
if ($oldversion < 2010102601) {
|
||||
// Fixed/updated numfiles field in assignment_submissions table to count the actual
|
||||
// number of files has been uploaded when sendformarking is disabled
|
||||
upgrade_set_timeout(600); // increase excution time for in large sites
|
||||
$fs = get_file_storage();
|
||||
|
||||
// Fetch the moduleid for use in the course_modules table
|
||||
$moduleid = $DB->get_field('modules', 'id', array('name' => 'assignment'), MUST_EXIST);
|
||||
|
||||
$selectcount = 'SELECT COUNT(s.id) ';
|
||||
$select = 'SELECT s.id, cm.id AS cmid ';
|
||||
$query = 'FROM {assignment_submissions} s
|
||||
JOIN {assignment} a ON a.id = s.assignment
|
||||
JOIN {course_modules} cm ON a.id = cm.instance AND cm.module = :moduleid
|
||||
WHERE assignmenttype = :assignmenttype';
|
||||
|
||||
$params = array('moduleid' => $moduleid, 'assignmenttype' => 'upload');
|
||||
|
||||
$countsubmissions = $DB->count_records_sql($selectcount.$query, $params);
|
||||
$submissions = $DB->get_recordset_sql($select.$query, $params);
|
||||
|
||||
$pbar = new progress_bar('assignmentupgradenumfiles', 500, true);
|
||||
$i = 0;
|
||||
foreach ($submissions as $sub) {
|
||||
$i++;
|
||||
if ($context = get_context_instance(CONTEXT_MODULE, $sub->cmid)) {
|
||||
$sub->numfiles = count($fs->get_area_files($context->id, 'mod_assignment', 'submission', $sub->id, 'sortorder', false));
|
||||
$DB->update_record('assignment_submissions', $sub);
|
||||
}
|
||||
$pbar->update($i, $countsubmissions, "Counting files of submissions ($i/$countsubmissions)");
|
||||
}
|
||||
$submissions->close();
|
||||
// assignment savepoint reached
|
||||
upgrade_mod_savepoint(true, 2010102601, 'assignment');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -378,8 +378,8 @@ class assignment_upload extends assignment_base {
|
||||
|
||||
/**
|
||||
* Counts all complete (real) assignment submissions by enrolled students. This overrides assignment_base::count_real_submissions().
|
||||
* This is necessary for advanced file uploads where we need to check that the data2 field is equal to "submitted" to determine
|
||||
* if a submission is complete.
|
||||
* This is necessary for tracked advanced file uploads where we need to check that the data2 field is equal to ASSIGNMENT_STATUS_SUBMITTED
|
||||
* to determine if a submission is complete.
|
||||
*
|
||||
* @param int $groupid (optional) If nonzero then count is restricted to this group
|
||||
* @return int The number of submissions
|
||||
@@ -394,13 +394,19 @@ class assignment_upload extends assignment_base {
|
||||
list($enroledsql, $params) = get_enrolled_sql($context, 'mod/assignment:view', $groupid);
|
||||
$params['assignmentid'] = $this->cm->instance;
|
||||
|
||||
// Get ids of users enrolled in the given course.
|
||||
$query = '';
|
||||
if ($this->drafts_tracked() and $this->isopen()) {
|
||||
$query = ' AND ' . $DB->sql_compare_text('s.data2') . " = '" . ASSIGNMENT_STATUS_SUBMITTED . "'";
|
||||
} else {
|
||||
// Count on submissions with files actually uploaded
|
||||
$query = " AND s.numfiles > 0";
|
||||
}
|
||||
return $DB->count_records_sql("SELECT COUNT('x')
|
||||
FROM {assignment_submissions} s
|
||||
LEFT JOIN {assignment} a ON a.id = s.assignment
|
||||
INNER JOIN ($enroledsql) u ON u.id = s.userid
|
||||
WHERE s.assignment = :assignmentid AND
|
||||
s.data2 = 'submitted'", $params);
|
||||
WHERE s.assignment = :assignmentid" .
|
||||
$query, $params);
|
||||
}
|
||||
|
||||
function print_responsefiles($userid, $return=false) {
|
||||
@@ -564,6 +570,7 @@ class assignment_upload extends assignment_base {
|
||||
$formdata = file_postupdate_standard_filemanager($formdata, 'files', $options, $this->context, 'mod_assignment', 'submission', $submission->id);
|
||||
$updates = new stdClass();
|
||||
$updates->id = $submission->id;
|
||||
$updates->numfiles = count($fs->get_area_files($this->context->id, 'mod_assignment', 'submission', $submission->id, 'sortorder', false));
|
||||
$updates->timemodified = time();
|
||||
$DB->update_record('assignment_submissions', $updates);
|
||||
add_to_log($this->course->id, 'assignment', 'upload',
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// This fragment is called by /admin/index.php
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$module->version = 2010102600;
|
||||
$module->version = 2010102601;
|
||||
$module->requires = 2010102600; // Requires this Moodle version
|
||||
$module->cron = 60;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user