Beispiel #1
0
/**
 * Gets the assignments from a specified course from Turnitin
 *
 * @param int $courseid the id of the course/class in Turnitin
 * @param str $returnformat the format we are returning data in
 * @return array of data in a datatables readable format
 */
function turnitintooltwo_get_assignments_from_tii($courseid, $returnformat = "json")
{
    global $DB;
    $return = array();
    if ($returnformat == "json") {
        $return["aaData"] = array();
    }
    $turnitincomms = new turnitintooltwo_comms();
    $turnitincall = $turnitincomms->initialise_api();
    $assignment = new TiiAssignment();
    $assignment->setClassId($courseid);
    $assignmentids = array();
    try {
        $response = $turnitincall->findAssignments($assignment);
        $findassignment = $response->getAssignment();
        $assignmentids = $findassignment->getAssignmentIds();
    } catch (Exception $e) {
        $turnitincomms->handle_exceptions($e, 'getassignmenterror', false);
    }
    $assignment = new TiiAssignment();
    $assignment->setAssignmentIds($assignmentids);
    $currentassignments = array();
    if (count($assignmentids) > 0) {
        list($insql, $inparams) = $DB->get_in_or_equal($assignmentids);
        $currentassignments['TT'] = $DB->get_records_select("turnitintooltwo_parts", " tiiassignid " . $insql, $inparams, '', 'tiiassignid');
        $dbman = $DB->get_manager();
        if ($dbman->table_exists('plagiarism_turnitin_config')) {
            $currentassignments['PP'] = $DB->get_records_select("plagiarism_turnitin_config", " name = 'turnitin_assignid' " . " AND value " . $insql, $inparams, '', 'value');
        } else {
            $currentassignments['PP'] = array();
        }
    }
    try {
        $response = $turnitincall->readAssignments($assignment);
        $readassignments = $response->getAssignments();
        foreach ($readassignments as $readassignment) {
            if (empty($currentassignments['TT'][$readassignment->getAssignmentId()]) && empty($currentassignments['PP'][$readassignment->getAssignmentId()])) {
                $checkbox = html_writer::checkbox('assignmentids[]', $readassignment->getAssignmentId(), false, '', array("id" => "assignmentid_" . $readassignment->getAssignmentId(), "disabled" => "disabled", "class" => "assignmentids_check"));
                if ($returnformat == "json") {
                    $return["aaData"][] = array($checkbox, $readassignment->getTitle(), $readassignment->getMaxGrade(), $readassignment->getAssignmentId());
                } else {
                    $return[$readassignment->getAssignmentId()] = array("tii_id" => $readassignment->getAssignmentId(), "tii_title" => $readassignment->getTitle());
                }
            } else {
                // Double check that migration has completed for this assignment.
                // If not then there has been an error so we delete the previously migrated assignment attempt.
                if ($part = $DB->get_record('turnitintooltwo_parts', array('tiiassignid' => $readassignment->getAssignmentId(), 'migrated' => -1))) {
                    $DB->delete_records('turnitintooltwo_parts', array('tiiassignid' => $readassignment->getAssignmentId(), 'migrated' => -1));
                    turnitintooltwo_activitylog("Deleted failed migration assignment part - id (" . $readassignment->getAssignmentId() . ")", "REQUEST");
                    // Remove the Turnitintool if it contains no other parts.
                    if ($DB->count_records('turnitintooltwo_parts', array('turnitintooltwoid' => $part->turnitintooltwoid)) == 0) {
                        $DB->delete_records("turnitintooltwo", array("id" => $part->turnitintooltwoid));
                        turnitintooltwo_activitylog("Deleted tool instance - id (" . $part->turnitintooltwoid . ")", "REQUEST");
                    }
                }
            }
        }
    } catch (Exception $e) {
        turnitintooltwo_activitylog(get_string('migrationassignmentgeterror', 'turnitintooltwo') . ' - Class: ' . $courseid, "REQUEST");
    }
    return $return;
}
 public function findAssignments($assignment)
 {
     try {
         $soap = $this->readLineItemIdsForCourseSection(array('sectionSourcedId' => $assignment->getClassId()));
         $response = new Response($this);
         if ($response->getStatus() == 'error') {
             throw new TurnitinSDKException($response->getStatusCode(), $response->getDescription());
         } else {
             $tiiAssignment = new TiiAssignment();
             $assignmentids = array();
             if (isset($soap->sourcedIdSet->sourcedId)) {
                 if (!is_array($soap->sourcedIdSet->sourcedId)) {
                     $soap->sourcedIdSet->sourcedId = array($soap->sourcedIdSet->sourcedId);
                 }
                 foreach ($soap->sourcedIdSet->sourcedId as $id) {
                     $assignmentids[] = $id;
                 }
             }
             $tiiAssignment->setAssignmentIds($assignmentids);
             $response->setAssignment($tiiAssignment);
         }
         return $response;
     } catch (SoapFault $e) {
         throw new TurnitinSDKException($e->faultcode, $e->faultstring, parent::getLogPath());
     }
 }