コード例 #1
0
ファイル: lib.php プロジェクト: aolley/MoodleDirectV2
/**
 * A Standard Moodle function that moodle executes at the time the cron runs
 */
function turnitintooltwo_cron()
{
    global $DB, $CFG;
    // get assignment that needs updating and check whether it exists
    if ($assignment = $DB->get_record('turnitintooltwo', array("needs_updating" => 1), '*', IGNORE_MULTIPLE)) {
        $turnitintooltwoassignment = new turnitintooltwo_assignment($assignment->id);
        $cm = get_coursemodule_from_instance("turnitintooltwo", $turnitintooltwoassignment->turnitintooltwo->id, $turnitintooltwoassignment->turnitintooltwo->course);
        $users = $turnitintooltwoassignment->get_moodle_course_users($cm);
        foreach ($users as $user) {
            // Only add to gradebook if author has been unanonymised or assignment doesn't have anonymous marking
            $grades = new stdClass();
            if ($submissions = $DB->get_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $turnitintooltwoassignment->turnitintooltwo->id, 'userid' => $user->id, 'submission_unanon' => 1))) {
                $overallgrade = $turnitintooltwoassignment->get_overall_grade($submissions, $cm);
                if ($turnitintooltwoassignment->turnitintooltwo->grade < 0) {
                    // Using a scale.
                    $grades->rawgrade = $overallgrade == '--' ? null : $overallgrade;
                } else {
                    $grades->rawgrade = $overallgrade == '--' ? null : number_format($overallgrade, 2);
                }
            }
            $grades->userid = $user->id;
            $params['idnumber'] = $cm->idnumber;
            @(include_once $CFG->dirroot . "/lib/gradelib.php");
            grade_update('mod/turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->course, 'mod', 'turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->id, 0, $grades, $params);
        }
        // remove the "needs updating" flag
        $update_assignment = new stdClass();
        $update_assignment->id = $assignment->id;
        $update_assignment->needs_updating = 0;
        $DB->update_record("turnitintooltwo", $update_assignment);
    }
    // Refresh the submissions for migrated assignment parts if there are none stored locally
    // as the 1st time this is done can be quite a long job if there are a lot of submissions.
    $migratedemptyparts = $DB->get_records_select('turnitintooltwo_parts', " migrated = 1 AND " . " (SELECT COUNT(id) FROM {turnitintooltwo_submissions} " . " WHERE submission_part = {turnitintooltwo_parts}.id) = 0 ");
    if (count($migratedemptyparts) > 0) {
        $updatedassignments = array();
        foreach ($migratedemptyparts as $part) {
            if (!array_search($part->id, $updatedassignments)) {
                $turnitintooltwoassignment = new turnitintooltwo_assignment($part->turnitintooltwoid);
                $turnitintooltwoassignment->get_submission_ids_from_tii($part);
                $turnitintooltwoassignment->refresh_submissions($part);
                $updatedassignments[] = $part->id;
                turnitintooltwo_activitylog('Turnitintool submissions downloaded for assignment ' . $part->id, 'REQUEST');
            }
        }
        echo 'Turnitintool submissions downloaded for assignments: ' . implode(',', $updatedassignments) . ' ';
    }
}
コード例 #2
0
ファイル: ajax.php プロジェクト: aolley/MoodleDirectV2
 $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid);
 $return = array();
 if (has_capability('mod/turnitintooltwo:read', context_module::instance($cm->id))) {
     $partid = required_param('part', PARAM_INT);
     $refreshrequested = required_param('refresh_requested', PARAM_INT);
     $start = required_param('start', PARAM_INT);
     $total = required_param('total', PARAM_INT);
     $parts = $turnitintooltwoassignment->get_parts();
     $updatefromtii = $refreshrequested || $turnitintooltwoassignment->turnitintooltwo->autoupdates == 1 ? 1 : 0;
     if ($updatefromtii && $start == 0) {
         $turnitintooltwoassignment->get_submission_ids_from_tii($parts[$partid]);
         $total = $_SESSION["TiiSubmissions"][$partid];
         $_SESSION["TiiSubmissionsRefreshed"][$partid] = time();
     }
     if ($start < $total && $updatefromtii) {
         $turnitintooltwoassignment->refresh_submissions($parts[$partid], $start);
     }
     $PAGE->set_context(context_module::instance($cm->id));
     $turnitintooltwoview = new turnitintooltwo_view();
     $return["aaData"] = $turnitintooltwoview->get_submission_inbox($cm, $turnitintooltwoassignment, $parts, $partid, $start);
     $return["end"] = $start + TURNITINTOOLTWO_SUBMISSION_GET_LIMIT;
     $return["total"] = $_SESSION["num_submissions"][$partid];
     // Remove any leftover submissions from session
     if ($return["end"] >= $return["total"]) {
         unset($_SESSION["submissions"][$partid]);
     }
 } else {
     $return["aaData"] = '';
 }
 echo json_encode($return);
 break;
コード例 #3
0
/**
 * A Standard Moodle function that moodle executes at the time the cron runs
 */
function turnitintooltwo_cron()
{
    global $DB, $CFG;
    // Update gradebook when a part has been deleted.
    // Get assignment that needs updating and check whether it exists
    if ($assignment = $DB->get_record('turnitintooltwo', array("needs_updating" => 1), '*', IGNORE_MULTIPLE)) {
        // Update the gradebook.
        $task = "needsupdating";
        turnitintooltwo_cron_update_gradbook($assignment, $task);
    }
    // Send grades to the gradebook for anonymous marking assignments when the post date has passed.
    // Get a list of assignments that need updating.
    if ($assignmentlist = $DB->get_records_sql("SELECT t.id FROM {turnitintooltwo} t\n                                                LEFT JOIN {turnitintooltwo_parts} p ON (p.turnitintooltwoid = t.id)\n                                                WHERE (turnitintooltwoid, dtpost) IN (SELECT turnitintooltwoid, MAX(dtpost) \n                                                    FROM {turnitintooltwo_parts} \n                                                    GROUP BY turnitintooltwoid) \n                                                AND t.anon = 1 AND t. anongradebook = 0 AND dtpost < " . time() . " \n                                                GROUP BY turnitintooltwoid")) {
        // Update each assignment.
        $task = "anongradebook";
        foreach ($assignmentlist as $assignment) {
            turnitintooltwo_cron_update_gradbook($assignment, $task);
        }
    }
    // Refresh the submissions for migrated assignment parts if there are none stored locally
    // as the 1st time this is done can be quite a long job if there are a lot of submissions.
    $migratedemptyparts = $DB->get_records_select('turnitintooltwo_parts', " migrated = 1 AND " . " (SELECT COUNT(id) FROM {turnitintooltwo_submissions} " . " WHERE submission_part = {turnitintooltwo_parts}.id) = 0 ");
    if (count($migratedemptyparts) > 0) {
        $updatedassignments = array();
        foreach ($migratedemptyparts as $part) {
            if (!array_search($part->id, $updatedassignments)) {
                $turnitintooltwoassignment = new turnitintooltwo_assignment($part->turnitintooltwoid);
                $turnitintooltwoassignment->get_submission_ids_from_tii($part);
                $turnitintooltwoassignment->refresh_submissions($part);
                $updatedassignments[] = $part->id;
                turnitintooltwo_activitylog('Turnitintool submissions downloaded for assignment ' . $part->id, 'REQUEST');
            }
        }
        echo 'Turnitintool submissions downloaded for assignments: ' . implode(',', $updatedassignments) . ' ';
    }
}