示例#1
0
/**
 * Processes the grade entry if grades are updated via Moodle only
 *
 * @param object $cm The moodle course module object for this instance
 * @param object $turnitintool The turnitintool object for this activity
 * @param array $post The POST array supplied from the grade update form
 * @return string Returns $notice in the event of an error
 */
function turnitintool_update_form_grades($cm, $turnitintool, $post)
{
    global $CFG;
    $notice = '';
    $total = 0;
    $owner = turnitintool_get_owner($turnitintool->course);
    foreach ($post['grade'] as $id => $thisgrade) {
        if (!($submission = turnitintool_get_record('turnitintool_submissions', 'id', $id))) {
            turnitintool_print_error('submissiongeterror', 'turnitintool', NULL, NULL, __FILE__, __LINE__);
            exit;
        }
        if ($thisgrade != $submission->submission_grade) {
            $total++;
        }
    }
    $loaderbar = new turnitintool_loaderbarclass($total + 2);
    $tii = new turnitintool_commclass(turnitintool_getUID($owner), $owner->firstname, $owner->lastname, $owner->email, 2, $loaderbar);
    $tii->startSession();
    $proc = 0;
    foreach ($post['grade'] as $id => $thisgrade) {
        $thisgrade = round($thisgrade);
        // round the grade to an integer / Turnitin won't accept a null grade via the API
        if (!($submission = turnitintool_get_record('turnitintool_submissions', 'id', $id))) {
            turnitintool_print_error('submissiongeterror', 'turnitintool', NULL, NULL, __FILE__, __LINE__);
            exit;
        }
        if (!($part = turnitintool_get_record_select('turnitintool_parts', "id=" . $submission->submission_part . " AND deleted=0"))) {
            turnitintool_print_error('partgeterror', 'turnitintool', NULL, NULL, __FILE__, __LINE__);
            exit;
        }
        // work out if the grade has changed from what is stored
        if (empty($thisgrade) or $thisgrade != $submission->submission_grade) {
            $user = turnitintool_get_moodleuser($submission->userid, NULL, __FILE__, __LINE__);
            $update = new object();
            $update->id = $id;
            $update->submission_grade = $thisgrade;
            print_object($update);
            if ($thisgrade > $part->maxmarks) {
                $input = new stdClass();
                $input->fullname = $user->firstname . ' ' . $user->lastname;
                $input->part = turnitintool_partnamefromnum($submission->submission_part);
                $input->maximum = $part->maxmarks;
                $notice .= get_string('submissiongradetoohigh', 'turnitintool', $input);
            } else {
                if (!($result = turnitintool_update_record('turnitintool_submissions', $update))) {
                    $notice = get_string('submissionupdateerror', 'turnitintool');
                }
            }
            // now push the grade to Turnitin
            $post = new stdClass();
            $post->oid = $submission->submission_objectid;
            $post->score = $thisgrade;
            $post->cid = turnitintool_getCID($turnitintool->course);
            $proc++;
            $add = new stdClass();
            $add->num = $proc;
            $add->total = $total;
            $tii->setGradeMark($post, get_string('pushinggrade', 'turnitintool', $add));
            if ($tii->getRerror()) {
                if ($tii->getAPIunavailable()) {
                    turnitintool_print_error('apiunavailable', 'turnitintool', NULL, NULL, __FILE__, __LINE__);
                } else {
                    turnitintool_print_error($tii->getRmessage() . ' CODE: ' . $tii->getRcode(), NULL, NULL, NULL, __FILE__, __LINE__);
                }
                exit;
            }
            @(include_once $CFG->dirroot . "/lib/gradelib.php");
            if (function_exists('grade_update')) {
                $grades = turnitintool_buildgrades($turnitintool, $user);
                $cm = get_coursemodule_from_instance("turnitintool", $turnitintool->id, $turnitintool->course);
                $params['idnumber'] = $cm->idnumber;
                grade_update('mod/turnitintool', $turnitintool->course, 'mod', 'turnitintool', $turnitintool->id, 0, $grades, $params);
            }
        }
    }
    $tii->endSession();
    $loaderbar->endloader();
    // Update gradebook grades in Moodle 1.9 and above
    turnitintool_redirect($CFG->wwwroot . "/mod/turnitintool/view.php?id=" . $cm->id . "&do=allsubmissions&update=1");
    return $notice;
}
示例#2
0
        $cells[3]->class = "header c3 cellcenter cellthin";
        $table->rows[0] = new stdClass();
        $table->rows[0]->cells = $cells;
    }
}
$table->class = '';
$table->width = '100%';
$i = 1;
foreach ($turnitintools as $turnitintool) {
    $dimmed = '';
    if (!$turnitintool->visible) {
        //Show dimmed if the mod is hidden
        $dimmed = ' class="dimmed"';
    }
    $link = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '">' . $turnitintool->name . '</a>';
    $part = turnitintool_get_record_select('turnitintool_parts', 'turnitintoolid=' . $turnitintool->id . ' AND deleted=0', NULL, 'MIN(dtstart) AS dtstart');
    $dtstart = '<span' . $dimmed . '>' . userdate($part->dtstart, get_string('strftimedatetimeshort', 'langconfig')) . '</span>';
    $partcount = turnitintool_count_records_select('turnitintool_parts', 'turnitintoolid=' . $turnitintool->id . ' AND deleted=0');
    if (has_capability('mod/turnitintool:grade', turnitintool_get_context('MODULE', $turnitintool->coursemodule))) {
        $submissioncount = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '&do=allsubmissions">' . turnitintool_count_records('turnitintool_submissions', 'turnitintoolid', $turnitintool->id) . '</a>';
    } else {
        $submissioncount = '<a' . $dimmed . ' href="view.php?id=' . $turnitintool->coursemodule . '&do=submissions">' . turnitintool_count_records_select('turnitintool_submissions', 'turnitintoolid=' . $turnitintool->id . ' AND userid=' . $USER->id) . '</a>';
    }
    if ($course->format == "weeks" or $course->format == "topics") {
        unset($cells);
        $cells[0] = new stdClass();
        $cells[0]->data = $turnitintool->section;
        $cells[0]->class = "cell c0 cellcenter cellthin";
        $cells[1] = new stdClass();
        $cells[1]->data = $link;
        $cells[1]->class = "cell c1 cellleft";