Esempio n. 1
0
     }
     $assignmentid = required_param('assignment', PARAM_INT);
     $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid);
     $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid);
     if (has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id))) {
         echo $turnitintooltwoassignment->enrol_all_students($cm);
     }
     break;
 case "refresh_rubric_select":
     $courseid = required_param('course', PARAM_INT);
     $assignmentid = required_param('assignment', PARAM_INT);
     $modulename = required_param('modulename', PARAM_ALPHA);
     if (has_capability('moodle/course:update', context_course::instance($courseid))) {
         // Set Rubric options to instructor rubrics.
         $instructor = new turnitintooltwo_user($USER->id, 'Instructor');
         $instructor->set_user_values_from_tii();
         $instructorrubrics = $instructor->get_instructor_rubrics();
         $options = array('' => get_string('norubric', 'turnitintooltwo')) + $instructorrubrics;
         // Add in rubric if the selected rubric belongs to another instructor.
         if (!empty($assignmentid)) {
             if ($modulename == "turnitintooltwo") {
                 $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid);
             } else {
                 require_once $CFG->dirroot . '/plagiarism/turnitin/lib.php';
                 $pluginturnitin = new plagiarism_plugin_turnitin();
                 $cm = get_coursemodule_from_instance($modulename, $assignmentid);
                 $plagiarismsettings = $pluginturnitin->get_settings($cm->id);
             }
             if ($modulename == "turnitintooltwo") {
                 if (!empty($turnitintooltwoassignment->turnitintooltwo->rubric)) {
                     $options[$turnitintooltwoassignment->turnitintooltwo->rubric] = isset($options[$turnitintooltwoassignment->turnitintooltwo->rubric]) ? $options[$turnitintooltwoassignment->turnitintooltwo->rubric] : get_string('otherrubric', 'turnitintooltwo');
 /**
  * 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);
         }
     }
 }
 public function definition()
 {
     global $CFG, $DB, $USER, $COURSE;
     $config = turnitintooltwo_admin_config();
     // Module string is useful for product support.
     $modulestring = '<!-- Turnitin Moodle Direct Version: ' . turnitintooltwo_get_version() . ' - (';
     // Get Moodle Course Object.
     $course = turnitintooltwo_assignment::get_course_data($COURSE->id);
     // Create or edit the class in Turnitin.
     if ($course->turnitin_cid == 0) {
         $tiicoursedata = turnitintooltwo_assignment::create_tii_course($course, $USER->id);
         $course->turnitin_cid = $tiicoursedata->turnitin_cid;
         $course->turnitin_ctl = $tiicoursedata->turnitin_ctl;
     } else {
         turnitintooltwo_assignment::edit_tii_course($course);
         $course->turnitin_ctl = $course->fullname . " (Moodle TT)";
     }
     // Join this user to the class as an instructor and get their rubrics.
     $instructor = new turnitintooltwo_user($USER->id, 'Instructor');
     $instructor->join_user_to_class($course->turnitin_cid);
     $instructor->set_user_values_from_tii();
     $instructorrubrics = $instructor->get_instructor_rubrics();
     // Get rubrics that are shared on the account.
     $turnitinclass = new turnitintooltwo_class($course->id);
     $turnitinclass->read_class_from_tii();
     // Merge the arrays, prioitising instructor owned arrays.
     $rubrics = $instructorrubrics + $turnitinclass->sharedrubrics;
     $this->numsubs = 0;
     if (isset($this->_cm->id)) {
         $turnitintooltwoassignment = new turnitintooltwo_assignment($this->_cm->instance);
         $turnitintooltwoassignment->update_assignment_from_tii();
         $this->turnitintooltwo = $DB->get_record("turnitintooltwo", array("id" => $this->_cm->instance));
         $parts = $DB->get_records("turnitintooltwo_parts", array("turnitintooltwoid" => $this->_cm->instance, "deleted" => 0), 'id');
         $i = 0;
         foreach ($parts as $part) {
             $i++;
             $attributes = array("id", "partname", "dtstart", "dtdue", "dtpost", "maxmarks");
             foreach ($attributes as $att) {
                 $attribute = $att . $i;
                 $this->current->{$attribute} = $part->{$att};
             }
             $attribute = "numsubs" . $i;
             $this->current->{$attribute} = $DB->count_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $this->turnitintooltwo->id, 'submission_part' => $part->id));
             $this->numsubs += $this->current->{$attribute};
             $modulestring .= $modulestring != "(" ? " | " : "";
             $modulestring .= $part->partname . ': ' . $part->tiiassignid;
         }
         $this->updating = true;
     } else {
         $this->updating = false;
         $instructordefaults = $instructor->get_instructor_defaults();
         if (empty($instructordefaults)) {
             $instructordefaults = array();
         }
         foreach ($instructordefaults as $k => $v) {
             $this->current->{$k} = $v;
         }
     }
     // Overwrite instructor default repository if admin is forcing repository setting
     switch ($config->repositoryoption) {
         case 2:
             // Force Standard Repository
             $this->current->submitpapersto = 1;
             break;
         case 3:
             // Force No Repository
             $this->current->submitpapersto = 0;
             break;
     }
     $modulestring .= ') -->';
     $this->show_form($rubrics, $modulestring, $course->turnitin_cid);
 }
Esempio n. 4
0
/**
 * Function called by course/reset.php when resetting moodle course, this is used to duplicate or reset a courses Turnitin
 * activities. If action specified is 'NEWCLASS' we are creating a new class on Turnitin. For both actions we create new
 * assignments on Turnitin and replace the turnitin ids for those parts in the database.
 *
 * @global object
 * @param var $courseid The course ID for the course to reset
 * @param string $action The action to use OLDCLASS or NEWCLASS
 * @return array The status array to pass to turnitintooltwo_reset_userdata
 */
function turnitintooltwo_duplicate_recycle($courseid, $action)
{
    set_time_limit(0);
    global $DB, $USER;
    $config = turnitintooltwo_admin_config();
    $partsarray = array();
    $error = false;
    $turnitintooltwouser = new turnitintooltwo_user($USER->id, "Instructor");
    $turnitintooltwouser->set_user_values_from_tii();
    $instructorrubrics = $turnitintooltwouser->get_instructor_rubrics();
    if (!($turnitintooltwos = $DB->get_records('turnitintooltwo', array('course' => $courseid)))) {
        turnitintooltwo_print_error('assigngeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__);
        exit;
    }
    if (!($course = $DB->get_record('course', array('id' => $courseid)))) {
        turnitintooltwo_print_error('coursegeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__);
        exit;
    }
    foreach ($turnitintooltwos as $turnitintooltwo) {
        if (!($parts = $DB->get_records('turnitintooltwo_parts', array('turnitintooltwoid' => $turnitintooltwo->id, 'deleted' => 0)))) {
            turnitintooltwo_print_error('partgeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__);
            exit;
        }
        foreach ($parts as $part) {
            $partsarray[$courseid][$turnitintooltwo->id][$part->id]['tiiassignid'] = $part->tiiassignid;
        }
    }
    $currentcourse = turnitintooltwo_assignment::get_course_data($courseid);
    if ($action == "NEWCLASS") {
        // Delete Turnitin class link.
        if (!($delete = $DB->delete_records('turnitintooltwo_courses', array('courseid' => $courseid)))) {
            turnitintooltwo_print_error('coursedeleteerror', 'turnitintooltwo', null, null, __FILE__, __LINE__);
            exit;
        }
        $currentcourse->tii_rel_id = '';
        // Create a new class to use with new parts.
        $tmpassignment = new turnitintooltwo_assignment(0, '', '');
        $newcourse = $tmpassignment->create_tii_course($currentcourse, $USER->id);
        // Join Instructor to class.
        $turnitintooltwouser->join_user_to_class($newcourse->turnitin_cid);
        $currentcourse->turnitin_cid = $newcourse->turnitin_cid;
        $currentcourse->turnitin_ctl = $newcourse->turnitin_ctl;
    }
    // Create array of all the Turnitin assignment ids.
    $assignmentids = array();
    foreach ($partsarray[$courseid] as $tiitoolid => $tiitool) {
        foreach ($tiitool as $partid => $data) {
            $assignmentids[] = $data['tiiassignid'];
        }
    }
    // Update all the assignments and parts from Turnitin.
    $turnitintooltwoassignment = new turnitintooltwo_assignment(0, '', '');
    $turnitintooltwoassignment->update_assignment_from_tii($assignmentids);
    // Loop through Turnitintool instances and re-create assignment on Turnitin then swap over the stored Turnitin ids.
    foreach ($partsarray[$courseid] as $tiitoolid => $tiitool) {
        $turnitintooltwoassignment = new turnitintooltwo_assignment($tiitoolid);
        // Create new Assignment parts on Turnitin.
        $i = 0;
        foreach ($tiitool as $partid => $data) {
            $i++;
            $assignment = new TiiAssignment();
            $assignment->setClassId($currentcourse->turnitin_cid);
            $assignment->setAuthorOriginalityAccess($turnitintooltwoassignment->turnitintooltwo->studentreports);
            $rubric_id = !empty($turnitintooltwoassignment->turnitintooltwo->rubric) ? $turnitintooltwoassignment->turnitintooltwo->rubric : '';
            $rubric_id = !empty($rubric_id) && array_key_exists($rubric_id, $instructorrubrics) ? $rubric_id : '';
            $assignment->setRubricId($rubric_id);
            $assignment->setSubmitPapersTo($turnitintooltwoassignment->turnitintooltwo->submitpapersto);
            $assignment->setResubmissionRule($turnitintooltwoassignment->turnitintooltwo->reportgenspeed);
            $assignment->setBibliographyExcluded($turnitintooltwoassignment->turnitintooltwo->excludebiblio);
            $assignment->setQuotedExcluded($turnitintooltwoassignment->turnitintooltwo->excludequoted);
            $assignment->setSmallMatchExclusionType($turnitintooltwoassignment->turnitintooltwo->excludetype);
            $assignment->setSmallMatchExclusionThreshold((int) $turnitintooltwoassignment->turnitintooltwo->excludevalue);
            if ($config->useanon) {
                $assignment->setAnonymousMarking($turnitintooltwoassignment->turnitintooltwo->anon);
            }
            $assignment->setLateSubmissionsAllowed($turnitintooltwoassignment->turnitintooltwo->allowlate);
            if ($config->repositoryoption == 1) {
                $assignment->setInstitutionCheck(isset($turnitintooltwoassignment->turnitintooltwo->institution_check) ? $turnitintooltwoassignment->turnitintooltwo->institution_check : 0);
            }
            $attribute = "maxmarks" . $i;
            $assignment->setMaxGrade($turnitintooltwoassignment->turnitintooltwo->{$attribute});
            $assignment->setSubmittedDocumentsCheck($turnitintooltwoassignment->turnitintooltwo->spapercheck);
            $assignment->setInternetCheck($turnitintooltwoassignment->turnitintooltwo->internetcheck);
            $assignment->setPublicationsCheck($turnitintooltwoassignment->turnitintooltwo->journalcheck);
            $assignment->setTranslatedMatching($turnitintooltwoassignment->turnitintooltwo->transmatch);
            $assignment->setAllowNonOrSubmissions($turnitintooltwoassignment->turnitintooltwo->allownonor);
            // Erater settings.
            $assignment->setErater(isset($turnitintooltwoassignment->turnitintooltwo->erater) ? $turnitintooltwoassignment->turnitintooltwo->erater : 0);
            $assignment->setEraterSpelling($turnitintooltwoassignment->turnitintooltwo->erater_spelling);
            $assignment->setEraterGrammar($turnitintooltwoassignment->turnitintooltwo->erater_grammar);
            $assignment->setEraterUsage($turnitintooltwoassignment->turnitintooltwo->erater_usage);
            $assignment->setEraterMechanics($turnitintooltwoassignment->turnitintooltwo->erater_mechanics);
            $assignment->setEraterStyle($turnitintooltwoassignment->turnitintooltwo->erater_style);
            $assignment->setEraterSpellingDictionary(isset($turnitintooltwoassignment->turnitintooltwo->erater_dictionary) ? $turnitintooltwoassignment->turnitintooltwo->erater_dictionary : 'en_US');
            $assignment->setEraterHandbook(isset($turnitintooltwoassignment->turnitintooltwo->erater_handbook) ? $turnitintooltwoassignment->turnitintooltwo->erater_handbook : 0);
            $attribute = "dtstart" . $i;
            $assignment->setStartDate(gmdate("Y-m-d\\TH:i:s\\Z", $turnitintooltwoassignment->turnitintooltwo->{$attribute}));
            $attribute = "dtdue" . $i;
            $assignment->setDueDate(gmdate("Y-m-d\\TH:i:s\\Z", $turnitintooltwoassignment->turnitintooltwo->{$attribute}));
            $attribute = "dtpost" . $i;
            $assignment->setFeedbackReleaseDate(gmdate("Y-m-d\\TH:i:s\\Z", $turnitintooltwoassignment->turnitintooltwo->{$attribute}));
            $attribute = "partname" . $i;
            $assignment->setTitle($turnitintooltwoassignment->turnitintooltwo->name . " " . $turnitintooltwoassignment->turnitintooltwo->{$attribute} . " (Moodle TT)");
            $partassignid = $turnitintooltwoassignment->create_tii_assignment($assignment, $turnitintooltwoassignment->turnitintooltwo->id, $i);
            if (empty($partassignid)) {
                turnitintooltwo_activitylog("Moodle Assignment could not be created (" . $turnitintooltwoassignment->id . ") - " . $turnitintooltwoassignment->turnitintooltwo->name, "REQUEST");
                $error = true;
            }
            $part = new stdClass();
            $part->id = $partid;
            $part->tiiassignid = $partassignid;
            $part->turnitintooltwoid = $turnitintooltwoassignment->turnitintooltwo->id;
            $part->partname = $turnitintooltwoassignment->turnitintooltwo->{$attribute};
            $part->deleted = 0;
            $part->maxmarks = $assignment->getMaxGrade();
            $part->dtstart = strtotime($assignment->getStartDate());
            $part->dtdue = strtotime($assignment->getDueDate());
            $part->dtpost = strtotime($assignment->getFeedbackReleaseDate());
            if (!($dbpart = $DB->update_record('turnitintooltwo_parts', $part))) {
                turnitintooltwo_print_error('partupdateerror', 'turnitintooltwo', null, $i, __FILE__, __LINE__);
                exit;
            } else {
                turnitintooltwo_activitylog("Moodle Assignment part updated (" . $part->id . ")", "REQUEST");
            }
            if (!($delete = $DB->delete_records('turnitintooltwo_submissions', array('submission_part' => $partid)))) {
                turnitintooltwo_print_error('submissiondeleteerror', 'turnitintooltwo', null, null, __FILE__, __LINE__);
                exit;
            }
        }
    }
    $item = $action == "NEWCLASS" ? get_string('copyassigndata', 'turnitintooltwo') : get_string('replaceassigndata', 'turnitintooltwo');
    $status[] = array('component' => get_string('modulenameplural', 'turnitintooltwo'), 'item' => $item, 'error' => $error);
    return $status;
}
Esempio n. 5
0
 public function definition()
 {
     global $CFG, $DB, $USER;
     $config = turnitintooltwo_admin_config();
     // Module string is useful for product support.
     if ($CFG->branch >= 26) {
         $pluginman = \core_plugin_manager::instance();
         $plugins = $pluginman->get_plugins();
         $module = $plugins['mod']['turnitintooltwo'];
     } else {
         $module = $DB->get_record('modules', array('name' => 'turnitintooltwo'));
     }
     $version = empty($module->version) ? $module->versiondisk : $module->version;
     $modulestring = '<!-- Turnitin Moodle Direct Version: ' . $version . ' - (';
     $this->numsubs = 0;
     $instructor = new turnitintooltwo_user($USER->id, 'Instructor');
     $instructor->set_user_values_from_tii();
     $instructorrubrics = $instructor->get_instructor_rubrics();
     if (isset($this->_cm->id)) {
         $turnitintooltwoassignment = new turnitintooltwo_assignment($this->_cm->instance);
         $turnitintooltwoassignment->update_assignment_from_tii();
         $this->turnitintooltwo = $DB->get_record("turnitintooltwo", array("id" => $this->_cm->instance));
         $parts = $DB->get_records("turnitintooltwo_parts", array("turnitintooltwoid" => $this->_cm->instance, "deleted" => 0), 'id');
         $i = 0;
         foreach ($parts as $part) {
             $i++;
             $attributes = array("id", "partname", "dtstart", "dtdue", "dtpost", "maxmarks");
             foreach ($attributes as $att) {
                 $attribute = $att . $i;
                 $this->current->{$attribute} = $part->{$att};
             }
             $attribute = "numsubs" . $i;
             $this->current->{$attribute} = $DB->count_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $this->turnitintooltwo->id, 'submission_part' => $part->id));
             $this->numsubs += $this->current->{$attribute};
             $modulestring .= $modulestring != "(" ? " | " : "";
             $modulestring .= $part->partname . ': ' . $part->tiiassignid;
         }
         $this->updating = true;
     } else {
         $this->updating = false;
         $instructordefaults = $instructor->get_instructor_defaults();
         if (empty($instructordefaults)) {
             $instructordefaults = array();
         }
         foreach ($instructordefaults as $k => $v) {
             $this->current->{$k} = $v;
         }
     }
     // Overwrite instructor default repository if admin is forcing repository setting
     switch ($config->repositoryoption) {
         case 2:
             // Force Standard Repository
             $this->current->submitpapersto = 1;
             break;
         case 3:
             // Force No Repository
             $this->current->submitpapersto = 0;
             break;
     }
     $modulestring .= ') -->';
     $this->show_form($instructorrubrics, $modulestring);
 }