/**
  * @param type $issueMilestone
  */
 public function createMilestone($issueMilestone)
 {
     $milestoneData = array('title' => $issueMilestone->getTitle(), 'description' => $issueMilestone->getDescription(), 'due_date' => $issueMilestone->getDueOn()->format('c'));
     $this->authenticate();
     $milestone = $this->client->api('milestones')->create($this->issueIntegrator->getProjectName(), $milestoneData);
     return $this->mapToEntity($milestone);
 }
 /**
  * Save updated submission data from Turnitin to the database
  *
  * @global type $DB
  * @param type $tiisubmissiondata
  * @param type $bulk
  * @param type $save - save in db regardless of changes
  * @return type
  */
 public function save_updated_submission_data($tiisubmissiondata, $bulk = false, $save = false)
 {
     global $DB, $CFG;
     static $part;
     static $tiiassignid;
     if ($tiiassignid != $tiisubmissiondata->getAssignmentId() || empty($part)) {
         $part = $DB->get_record("turnitintooltwo_parts", array("tiiassignid" => $tiisubmissiondata->getAssignmentId()));
     }
     $turnitintooltwoassignment = new turnitintooltwo_assignment($part->turnitintooltwoid);
     $sub = new stdClass();
     $sub->submission_title = $tiisubmissiondata->getTitle();
     $sub->submission_part = $part->id;
     $sub->submission_objectid = $tiisubmissiondata->getSubmissionId();
     $sub->turnitintooltwoid = $turnitintooltwoassignment->turnitintooltwo->id;
     $sub->submission_score = is_numeric($tiisubmissiondata->getOverallSimilarity()) ? $tiisubmissiondata->getOverallSimilarity() : null;
     $sub->submission_transmatch = 0;
     if ($turnitintooltwoassignment->turnitintooltwo->transmatch == 1 && is_int($tiisubmissiondata->getTranslatedOverallSimilarity())) {
         if ($tiisubmissiondata->getTranslatedOverallSimilarity() > $tiisubmissiondata->getOverallSimilarity()) {
             $sub->submission_score = $tiisubmissiondata->getTranslatedOverallSimilarity();
             $sub->submission_transmatch = 1;
         }
     }
     $sub->submission_grade = $tiisubmissiondata->getGrade() == '' ? null : $tiisubmissiondata->getGrade();
     $sub->submission_gmimaged = $tiisubmissiondata->getFeedbackExists();
     $sub->submission_unanon = $tiisubmissiondata->getAnonymous() == 1 ? 0 : 1;
     $sub->submission_orcapable = $tiisubmissiondata->getOriginalityReportCapable() == 1 ? 1 : 0;
     $sub->submission_acceptnothing = $tiisubmissiondata->getAcceptNothingSubmission() == 1 ? 1 : 0;
     $sub->submission_unanonreason = $sub->submission_unanon == 1 ? urldecode($tiisubmissiondata->getAnonymousRevealReason()) : null;
     $sub->submission_modified = strtotime($tiisubmissiondata->getDate());
     $sub->translated_overall_similarity = $tiisubmissiondata->getTranslatedOverallSimilarity();
     $sub->submission_attempts = $tiisubmissiondata->getAuthorLastViewedFeedback() > 0 ? strtotime($tiisubmissiondata->getAuthorLastViewedFeedback()) : 0;
     // If save not passed in then only update if certain items have changed to save on database load.
     if ($this->submission_grade != $sub->submission_grade || $this->submission_score != $sub->submission_score || $this->submission_modified != $sub->submission_modified || $this->submission_attempts != $sub->submission_attempts || $this->submission_unanon != $sub->submission_unanon || $this->submission_part != $sub->submission_part) {
         $save = true;
     }
     $cm = get_coursemodule_from_instance("turnitintooltwo", $turnitintooltwoassignment->turnitintooltwo->id, $turnitintooltwoassignment->turnitintooltwo->course);
     if ($save) {
         // If the user is not a moodle user then get their name from Tii - only do this on initial save.
         $sub->userid = turnitintooltwo_user::get_moodle_user_id($tiisubmissiondata->getAuthorUserId());
         // If we have no user ID get it from the Moodle database by using their Turnitin e-mail address.
         if ($sub->userid == 0) {
             $tmpuser = new turnitintooltwo_user(0);
             $tmpuser->tii_user_id = $tiisubmissiondata->getAuthorUserId();
             $tiiuser = $tmpuser->set_user_values_from_tii();
             if ($userrecord = $DB->get_record('user', array('email' => $tiiuser["email"]))) {
                 $sub->userid = $userrecord->id;
             }
         }
         // Check if the user is enrolled.
         if ($sub->userid != 0) {
             $context = context_module::instance($cm->id);
             if (!is_enrolled($context, $sub->userid)) {
                 // Enroll the user as a student.
                 $enrol = enrol_get_plugin('manual');
                 $instance = $DB->get_record("enrol", array('courseid' => $cm->course, 'enrol' => 'manual'));
                 $enrol->enrol_user($instance, $sub->userid, 5);
             }
         }
         if ($sub->userid == 0 && empty($this->id)) {
             if ($tiisubmissiondata->getAuthorUserId() > 0) {
                 $sub->submission_nmuserid = $tiisubmissiondata->getAuthorUserId();
                 $tmpuser = new turnitintooltwo_user(0);
                 $tmpuser->tii_user_id = $tiisubmissiondata->getAuthorUserId();
                 $tiiuser = $tmpuser->set_user_values_from_tii();
                 $sub->submission_nmfirstname = $tiiuser["firstname"];
                 $sub->submission_nmlastname = $tiiuser["lastname"];
             } else {
                 $sub->submission_nmuserid = "nm-" . $tiisubmissiondata->getAuthorUserId();
                 $sub->submission_nmfirstname = '';
                 $sub->submission_nmlastname = get_string('nonmoodleuser', 'turnitintooltwo');
             }
         }
         if (!empty($this->id)) {
             $sub->id = $this->id;
             $DB->update_record("turnitintooltwo_submissions", $sub, $bulk);
         } else {
             $sub->id = $DB->insert_record("turnitintooltwo_submissions", $sub, true, $bulk);
         }
         // Update gradebook.
         @(include_once $CFG->libdir . "/gradelib.php");
         if ($sub->userid > 0 && $sub->submission_unanon) {
             $user = new turnitintooltwo_user($sub->userid, "Learner");
             $grades = new stdClass();
             // Only add to gradebook if author has been unanonymised or assignment doesn't have anonymous marking
             if ($submissions = $DB->get_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $turnitintooltwoassignment->turnitintooltwo->id, 'userid' => $user->id, 'submission_unanon' => 1))) {
                 $overallgrade = $turnitintooltwoassignment->get_overall_grade($submissions);
                 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;
             grade_update('mod/turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->course, 'mod', 'turnitintooltwo', $turnitintooltwoassignment->turnitintooltwo->id, 0, $grades, $params);
         }
     }
 }
Exemplo n.º 3
0
 /**
  * Bulk PHP validation.
  *
  * @param type $field Field class instance
  * @param type $value
  * @return \WP_Error|boolean
  * @throws Exception
  */
 public function validateField($field)
 {
     $value = apply_filters('wptoolset_validation_value_' . $field->getType(), $field->getValue());
     $rules = $this->_parseRules($field->getValidationData(), $value);
     // If not required but empty - skip
     if (!isset($rules['required']) && (is_null($value) || $value === false || $value === '')) {
         return true;
     }
     try {
         $errors = array();
         foreach ($rules as $rule => $args) {
             if (!$this->validate($rule, $args['args'])) {
                 $errors[] = $field->getTitle() . ' ' . $args['message'];
             }
         }
         if (!empty($errors)) {
             throw new Exception();
         }
     } catch (Exception $e) {
         return new WP_Error(__CLASS__ . '::' . __METHOD__, 'Field not validated', $errors);
     }
     return true;
 }
 /**
  * @param type $object has to be instance of WikiPage, OutputPage or Title
  */
 protected function getNamespaceFromObject($object)
 {
     if ($object instanceof WikiPage || $object instanceof OutputPage) {
         return $object->getTitle()->getNamespace();
     } elseif ($object instanceof Title) {
         return $object->getNamespace();
     } else {
         throw new \Exception('Invalid Object passed to' . __METHOD__);
     }
 }
 /**
  * @param type $issueLabel
  */
 public function createLabel($issueLabel)
 {
     $this->authenticate();
     $label = $this->client->api('issue')->labels()->create($this->issueIntegrator->getOwnerName(), $this->issueIntegrator->getRepoName(), array('name' => $issueLabel->getTitle(), 'color' => $issueLabel->getHexColor()));
     return $this->mapToEntity($label);
 }
Exemplo n.º 6
0
 /**
  * Bulk PHP validation.
  *
  * @param type $field Field class instance
  * @param type $value
  * @return \WP_Error|boolean
  * @throws Exception
  */
 public function validateField($field)
 {
     $value = apply_filters('wptoolset_validation_value_' . $field->getType(), $field->getValue());
     $rules = $this->_parseRules($field->getValidationData(), $value);
     // If not required but empty - skip
     if (!isset($rules['required']) && (is_null($value) || $value === false || $value === '')) {
         return true;
     }
     try {
         $errors = array();
         foreach ($rules as $rule => $args) {
             if (!$this->validate($rule, $args['args'])) {
                 /**
                  * Allow turn off field name.
                  *
                  * Allow turn off field name from error message.
                  *
                  * @since x.x.x
                  *
                  * @param boolean $var show field title in message, * default true.
                  */
                 if (apply_filters('toolset_common_validation_add_field_name_to_error', true)) {
                     $errors[] = $field->getTitle() . ' ' . $args['message'];
                 } else {
                     $errors[] = $args['message'];
                 }
             }
         }
         if (!empty($errors)) {
             throw new Exception();
         }
     } catch (Exception $e) {
         return new WP_Error(__CLASS__ . '::' . __METHOD__, 'Field not validated', $errors);
     }
     return true;
 }
 /**
  * @param type $issueLabel
  */
 public function createLabel($issueLabel)
 {
     $this->authenticate();
     $label = $this->client->api('projects')->addLabel($this->issueIntegrator->getProjectName(), array('name' => $issueLabel->getTitle(), 'color' => '#' . $issueLabel->getHexColor()));
     return $this->mapToEntity($label);
 }