/**
  * Get ids of submissions from Turnitin
  *
  * @param object $part the part to get submissions for
  */
 public function get_submission_ids_from_tii($part)
 {
     // Initialise Comms Object.
     $turnitincomms = new turnitintooltwo_comms();
     $turnitincall = $turnitincomms->initialise_api();
     try {
         $submission = new TiiSubmission();
         $submission->setAssignmentId($part->tiiassignid);
         // Only update submissions that have been modified since last update.
         if (!empty($_SESSION["TiiSubmissionsRefreshed"][$part->id])) {
             $submission->setDateFrom(gmdate("Y-m-d\\TH:i:s\\Z", $_SESSION["TiiSubmissionsRefreshed"][$part->id]));
         }
         $response = $turnitincall->findSubmissions($submission);
         $findsubmission = $response->getSubmission();
         $_SESSION["TiiSubmissions"][$part->id] = $findsubmission->getSubmissionIds();
     } catch (Exception $e) {
         $turnitincomms->handle_exceptions($e, 'tiisubmissionsgeterror', false);
     }
 }
 public function update_grades_from_tii($cm)
 {
     global $DB;
     $plagiarismvalues = $this->get_settings($cm->id);
     $submissionids = array();
     $return = true;
     // Initialise Comms Object.
     $turnitincomms = new turnitin_comms();
     $turnitincall = $turnitincomms->initialise_api();
     // Get the submission ids from Turnitin that have been updated.
     try {
         $submission = new TiiSubmission();
         $submission->setAssignmentId($plagiarismvalues["turnitin_assignid"]);
         // Only update submissions that have been modified since last update.
         if (!empty($plagiarismvalues["grades_last_synced"])) {
             $submission->setDateFrom(gmdate("Y-m-d\\TH:i:s\\Z", $plagiarismvalues["grades_last_synced"]));
         }
         $response = $turnitincall->findSubmissions($submission);
         $findsubmission = $response->getSubmission();
         $submissionids = $findsubmission->getSubmissionIds();
     } catch (Exception $e) {
         $turnitincomms->handle_exceptions($e, 'tiisubmissionsgeterror', false);
         $return = false;
     }
     // Refresh updated submissions.
     if (count($submissionids) > 0) {
         // Process submissions in batches, depending on the max. number of submissions the Turnitin API returns.
         $submissionbatches = array_chunk($submissionids, PLAGIARISM_TURNITIN_NUM_RECORDS_RETURN);
         foreach ($submissionbatches as $submissionsbatch) {
             try {
                 $submission = new TiiSubmission();
                 $submission->setSubmissionIds($submissionsbatch);
                 $response = $turnitincall->readSubmissions($submission);
                 $readsubmissions = $response->getSubmissions();
                 foreach ($readsubmissions as $readsubmission) {
                     $submissiondata = $DB->get_record('plagiarism_turnitin_files', array('externalid' => $readsubmission->getSubmissionId()), 'id');
                     $return = $this->update_submission($cm, $submissiondata->id, $readsubmission);
                 }
             } catch (Exception $e) {
                 $turnitincomms->handle_exceptions($e, 'tiisubmissiongeterror', false);
                 $return = false;
             }
         }
     }
     return $return;
 }