public function update_status($course, $cm)
 {
     global $DB, $USER, $OUTPUT;
     $outputhtml = '';
     $userprofilefieldname = 'turnitinteachercoursecache';
     if (!($plagiarismsettings = $this->get_settings())) {
         return;
     }
     // If Turinitin has already been told about this user's rights in this course,
     // the courseid will exist in a comma separated listed in a hidden profile field.
     // Thus stored so that we don't repeatedly advise turnitin, and site admins can clear the cache if so desired.
     $newrecord = null;
     if (!isset($USER->profile)) {
         // User has had a partial login - possibly over web services.
         // Check for profile details directly in DB:
         $sql = 'SELECT d.id, d.data ' . 'FROM {user_info_field} f ' . ' INNER JOIN {user_info_data} d ON d.fieldid = f.id ' . 'WHERE f.shortname = ? ' . ' AND d.userid = ? ';
         $userprofiledetail = $DB->get_record_sql($sql, array($userprofilefieldname, $USER->id));
         if (!empty($userprofiledetail)) {
             $existingcourses = explode(',', $userprofiledetail->data);
             $newrecord = false;
         } else {
             $existingcourses = array();
             $newrecord = true;
         }
     } else {
         if (!empty($USER->profile[$userprofilefieldname])) {
             $existingcourses = explode(',', $USER->profile[$userprofilefieldname]);
             $newrecord = false;
         } else {
             $existingcourses = array();
             $sql = 'SELECT d.id ' . ' FROM {user_info_field} f ' . ' INNER JOIN {user_info_data} d ON d.fieldid = f.id ' . ' WHERE f.shortname = ? ' . ' AND d.userid = ? ';
             if (!$DB->record_exists_sql($sql, array($userprofilefieldname, $USER->id))) {
                 $newrecord = true;
             } else {
                 $newrecord = false;
             }
         }
     }
     if (!in_array($course->id, $existingcourses)) {
         // Turnitin doesn't (yet) know that this user is a teacher in this course.  Tell them:
         $tii = array();
         $tii['utp'] = TURNITIN_INSTRUCTOR;
         $tii = turnitin_get_tii_user($tii, $USER);
         $tii['cid'] = get_config('plagiarism_turnitin_course', $course->id);
         //course ID
         $tii['ctl'] = strlen($course->shortname) > 45 ? substr($course->shortname, 0, 45) : $course->shortname;
         $tii['ctl'] = strlen($tii['ctl']) > 5 ? $tii['ctl'] : $tii['ctl'] . "_____";
         $tii['fcmd'] = TURNITIN_RETURN_XML;
         $tii['fid'] = TURNITIN_CREATE_CLASS;
         $tiixml = plagiarism_get_xml(turnitin_get_url($tii, $plagiarismsettings));
         if ($tiixml->rcode[0] != TURNITIN_RESP_CLASS_CREATED) {
             return $OUTPUT->notification(get_string('errorassigninguser', 'plagiarism_turnitin'));
         }
         $existingcourses[] = $course->id;
         $newcoursecache = implode(',', $existingcourses);
         // Now update our record of what teacherships TII knows about:
         $userprofilefieldid = $DB->get_field('user_info_field', 'id', array('shortname' => $userprofilefieldname));
         if ($newrecord) {
             // New field - will need to insert a new record.
             $userdata = new stdclass();
             $userdata->userid = $USER->id;
             $userdata->fieldid = $userprofilefieldid;
             $userdata->data = $newcoursecache;
             $DB->insert_record('user_info_data', $userdata);
         } else {
             $DB->set_field('user_info_data', 'data', $newcoursecache, array('userid' => $USER->id, 'fieldid' => $userprofilefieldid));
         }
         $USER->profile[$userprofilefieldname] = $newcoursecache;
     }
     $tii = array();
     //print link to teacher login
     $tii['fcmd'] = TURNITIN_LOGIN;
     //when set to 2 this returns XML
     $tii['utp'] = TURNITIN_INSTRUCTOR;
     $tii['fid'] = TURNITIN_CREATE_USER;
     //set commands - Administrator login/statistics.
     $tii = turnitin_get_tii_user($tii, $USER);
     $outputhtml .= '<div style="text-align:right"><a href="' . turnitin_get_url($tii, $plagiarismsettings) . '" target="_blank">' . get_string("teacherlogin", "plagiarism_turnitin") . '</a></div>';
     //currently only used for grademark - check if enabled and return if not.
     //TODO: This call degrades page performance - need to run less frequently.
     if (empty($plagiarismsettings['turnitin_enablegrademark'])) {
         return $outputhtml;
     }
     if (!($moduletype = $DB->get_field('modules', 'name', array('id' => $cm->module)))) {
         debugging("invalid moduleid! - moduleid:" . $cm->module);
     }
     if (!($module = $DB->get_record($moduletype, array('id' => $cm->instance)))) {
         debugging("invalid instanceid! - instance:" . $cm->instance . " Module:" . $moduletype);
     }
     //set globals.
     $tii['utp'] = TURNITIN_INSTRUCTOR;
     $tii = turnitin_get_tii_user($tii, $USER);
     $tii['cid'] = get_config('plagiarism_turnitin_course', $course->id);
     //course ID
     $tii['ctl'] = strlen($course->shortname) > 45 ? substr($course->shortname, 0, 45) : $course->shortname;
     $tii['ctl'] = strlen($tii['ctl']) > 5 ? $tii['ctl'] : $tii['ctl'] . "_____";
     $turnitin_assignid = $DB->get_field('plagiarism_turnitin_config', 'value', array('cm' => $cm->id, 'name' => 'turnitin_assignid'));
     if (!empty($turnitin_assignid)) {
         $tii['assignid'] = $turnitin_assignid;
     }
     $tii['assign'] = turnitin_get_assign_name($module->name, $cm->id);
     //assignment name stored in TII
     $tii['fcmd'] = TURNITIN_RETURN_XML;
     $tii['fid'] = TURNITIN_LIST_SUBMISSIONS;
     $tiixml = plagiarism_get_xml(turnitin_get_url($tii, $plagiarismsettings));
     if (!empty($tiixml->object)) {
         //get full list of turnitin_files for this cm
         $grademarkstatus = array();
         foreach ($tiixml->object as $tiiobject) {
             $grademarkstatus[(int) $tiiobject->objectID[0]] = (int) $tiiobject->gradeMarkStatus[0];
         }
         if (!empty($grademarkstatus)) {
             $plagiarsim_files = $DB->get_records('plagiarism_turnitin_files', array('cm' => $cm->id));
             foreach ($plagiarsim_files as $file) {
                 if (isset($grademarkstatus[$file->externalid]) && $file->externalstatus != $grademarkstatus[$file->externalid]) {
                     $file->externalstatus = $grademarkstatus[$file->externalid];
                     $DB->update_record('plagiarism_turnitin_files', $file);
                 }
             }
         }
     }
     return $outputhtml;
 }
                if (!$DB->insert_record('config_plugins', $tiiconfigfield)) {
                    error("errorinserting");
                }
            }
        }
    }
    $plagiarismsettings = $plagiarismplugin->get_settings();
    //now call TII settings to set up teacher account as set on this page.
    if ($plagiarismsettings) {
        //get tii settings.
        $tii = array();
        $tii['utp'] = TURNITIN_INSTRUCTOR;
        $tii['fcmd'] = TURNITIN_RETURN_XML;
        $tii['fid'] = TURNITIN_CREATE_USER;
        $tii = turnitin_get_tii_user($tii, $USER);
        $tiixml = plagiarism_get_xml(turnitin_get_url($tii, $plagiarismsettings));
        if (!empty($tiixml->rcode[0]) && $tiixml->rcode[0] == '11') {
            notify(get_string('savedconfigsuccess', 'plagiarism_turnitin'), 'notifysuccess');
        } else {
            //disable turnitin as this config isn't correct.
            $rec = $DB->get_record('config_plugins', array('name' => 'turnitin_use', 'plugin' => 'plagiarism'));
            $rec->value = 0;
            $DB->update_record('config_plugins', $rec);
            notify(get_string('savedconfigfailure', 'plagiarism_turnitin'));
        }
    }
}
$mform->set_data($plagiarismsettings);
//check for old 1.9 tables and display upgrade button.
$dbman = $DB->get_manager();
$table = new xmldb_table('tii_files');