/** * 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()); } }