protected function define_structure() { global $CFG, $DB; // To know if we are including userinfo $userinfo = $this->get_setting_value('userinfo'); // Define each element separated $turnitintool = new backup_nested_element('turnitintool', array('id'), array('type', 'name', 'grade', 'numparts', 'tiiaccount', 'defaultdtstart', 'defaultdtdue', 'defaultdtpost', 'anon', 'portfolio', 'allowlate', 'reportgenspeed', 'submitpapersto', 'spapercheck', 'internetcheck', 'journalcheck', 'maxfilesize', 'intro', 'introformat', 'timecreated', 'timemodified', 'studentreports', 'dateformat', 'usegrademark', 'gradedisplay', 'autoupdates', 'commentedittime', 'commentmaxsize', 'autosubmission', 'shownonsubmission', 'excludebiblio', 'excludequoted', 'excludevalue', 'excludetype', 'erater', 'erater_handbook', 'erater_dictionary', 'erater_spelling', 'erater_grammar', 'erater_usage', 'erater_mechanics', 'erater_style', 'transmatch')); $parts = new backup_nested_element('parts'); $part = new backup_nested_element('part', array('id'), array('turnitintoolid', 'partname', 'tiiassignid', 'dtstart', 'dtdue', 'dtpost', 'maxmarks', 'deleted')); $courses = new backup_nested_element('courses'); $course = new backup_nested_element('course', array('id'), array('courseid', 'ownerid', 'ownertiiuid', 'owneremail', 'ownerfn', 'ownerln', 'ownerun', 'turnitin_ctl', 'turnitin_cid')); $submissions = new backup_nested_element('submissions'); $submission = new backup_nested_element('submission', array('id'), array('userid', 'submission_part', 'submission_title', 'submission_type', 'submission_filename', 'submission_objectid', 'submission_score', 'submission_grade', 'submission_gmimaged', 'submission_status', 'submission_queued', 'submission_attempts', 'submission_modified', 'submission_parent', 'submission_nmuserid', 'submission_nmfirstname', 'submission_nmlastname', 'submission_unanon', 'submission_anonreason', 'submission_transmatch', 'tiiuserid')); $comments = new backup_nested_element('comments'); $comment = new backup_nested_element('comment', array('id'), array('submissionid', 'userid', 'commenttext', 'dateupdated', 'deleted')); // Build the tree $comments->add_child($comment); $submission->add_child($comments); $submissions->add_child($submission); $parts->add_child($part); $turnitintool->add_child($parts); $turnitintool->add_child($course); $turnitintool->add_child($submissions); // Define sources $turnitintool->set_source_table('turnitintool', array('id' => backup::VAR_ACTIVITYID)); $values['tiiaccount'] = $CFG->turnitin_account_id; $turnitintool->fill_values($values); $part->set_source_table('turnitintool_parts', array('turnitintoolid' => backup::VAR_ACTIVITYID)); $course->set_source_sql(' SELECT t.id, t.courseid, t.ownerid, tu.turnitin_uid AS ownertiiuid, u.email AS owneremail, u.firstname AS ownerfn, u.lastname AS ownerln, u.username AS ownerun, t.turnitin_ctl, t.turnitin_cid FROM {turnitintool_courses} t, {user} u, {turnitintool_users} tu WHERE t.ownerid=u.id AND tu.userid=t.ownerid AND t.courseid = ?', array(backup::VAR_COURSEID)); // All the rest of elements only happen if we are including user info if ($userinfo) { $comment->set_source_table('turnitintool_comments', array('submissionid' => '../../id')); //$submission->set_source_table('turnitintool_submissions', array('turnitintoolid' => '../../id')); $submission->set_source_sql(' SELECT s.*, tu.turnitin_uid AS tiiuserid FROM {turnitintool_submissions} s, {turnitintool_users} tu WHERE s.userid=tu.userid AND s.turnitintoolid = ?', array(backup::VAR_ACTIVITYID)); } // Define id annotations $submission->annotate_ids('user', 'userid'); // Define file annotations $turnitintool->annotate_files('mod_turnitintool', 'intro', null); // This file area hasn't itemid $submission->annotate_files('mod_turnitintool', 'submission', 'id'); // Return the root element (turnitintool), wrapped into standard activity structure return $this->prepare_activity_structure($turnitintool); }
public function fill_values($values) { // Fill values parent::fill_values($values); // Do our own tasks (copy file from moodle to backup) try { backup_file_manager::copy_file_moodle2backup($this->backupid, $values); } catch (file_exception $e) { $this->add_result(array('missing_files_in_pool' => true)); // Build helpful log message with all information necessary to identify // file location. $context = context::instance_by_id($values->contextid, IGNORE_MISSING); $contextname = ''; if ($context) { $contextname = ' \'' . $context->get_context_name() . '\''; } $message = 'Missing file in pool: ' . $values->filepath . $values->filename . ' (context ' . $values->contextid . $contextname . ', component ' . $values->component . ', filearea ' . $values->filearea . ', itemid ' . $values->itemid . ') [' . $e->debuginfo . ']'; $this->add_log($message, backup::LOG_WARNING); } }
public function fill_values($values) { // Fill values parent::fill_values($values); // Do our own tasks (copy file from moodle to backup) backup_file_manager::copy_file_moodle2backup($this->backupid, $values); }
public function fill_values($values) { // Fill values parent::fill_values($values); // Do our own tasks (copy file from moodle to backup) try { backup_file_manager::copy_file_moodle2backup($this->backupid, $values); } catch (file_exception $e) { $this->add_result(array('missing_files_in_pool' => true)); $this->add_log('missing file in pool: ' . $e->debuginfo, backup::LOG_WARNING); } }