Artem Andreev
14 years ago
5 changed files with 415 additions and 0 deletions
@ -0,0 +1,55 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* Class {@link backup_attforblock_activity_task} definition |
|||
* |
|||
* @package mod |
|||
* @subpackage attforblock |
|||
* @copyright 2011 Artem Andreev <andreev.artem@gmail.com> |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|||
*/ |
|||
|
|||
defined('MOODLE_INTERNAL') || die(); |
|||
|
|||
require_once($CFG->dirroot . '/mod/attforblock/backup/moodle2/backup_attforblock_settingslib.php'); |
|||
require_once($CFG->dirroot . '/mod/attforblock/backup/moodle2/backup_attforblock_stepslib.php'); |
|||
|
|||
/** |
|||
* Provides all the settings and steps to perform one complete backup of attforblock activity |
|||
*/ |
|||
class backup_attforblock_activity_task extends backup_activity_task { |
|||
|
|||
/** |
|||
* Define (add) particular settings this activity can have |
|||
*/ |
|||
protected function define_my_settings() { |
|||
// No particular settings for this activity |
|||
} |
|||
|
|||
/** |
|||
* Define (add) particular steps this activity can have |
|||
*/ |
|||
protected function define_my_steps() { |
|||
$this->add_step(new backup_attforblock_activity_structure_step('attforblock_structure', 'attforblock.xml')); |
|||
} |
|||
|
|||
/** |
|||
* Code the transformations to perform in the activity in |
|||
* order to get transportable (encoded) links |
|||
*/ |
|||
static public function encode_content_links($content) { |
|||
global $CFG; |
|||
|
|||
$base = preg_quote($CFG->wwwroot,"/"); |
|||
|
|||
//Link to attforblock view by moduleid |
|||
$search = "/(" . $base . "\/mod\/attforblock\/view.php\?id\=)([0-9]+)/"; |
|||
$content= preg_replace($search, '$@ATTFORBLOCKVIEWBYID*$2@$', $content); |
|||
|
|||
//Link to attforblock view by moduleid and studentid |
|||
$search = "/(" . $base . "\/mod\/attforblock\/view.php\?id\=)([0-9]+)\&studentid\=([0-9]+)/"; |
|||
$content= preg_replace($search, '$@ATTFORBLOCKVIEWBYIDSTUD*$2*$3@$', $content); |
|||
|
|||
return $content; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* @package mod |
|||
* @subpackage attforblock |
|||
* @copyright 2011 Artem Andreev <andreev.artem@gmail.com> |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|||
*/ |
|||
|
|||
// This activity has not particular settings but the inherited from the generic |
|||
// backup_activity_task so here there isn't any class definition, like the ones |
|||
// existing in /backup/moodle2/backup_settingslib.php (activities section) |
@ -0,0 +1,97 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* Defines all the backup steps that will be used by {@link backup_attforblock_activity_task} |
|||
* |
|||
* @package mod |
|||
* @subpackage attforblock |
|||
* @copyright 2011 Artem Andreev <andreev.artem@gmail.com> |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|||
*/ |
|||
|
|||
defined('MOODLE_INTERNAL') || die(); |
|||
|
|||
/** |
|||
* Defines the complete attforblock structure for backup, with file and id annotations |
|||
*/ |
|||
class backup_attforblock_activity_structure_step extends backup_activity_structure_step { |
|||
|
|||
protected function define_structure() { |
|||
|
|||
// are we including userinfo? |
|||
$userinfo = $this->get_setting_value('userinfo'); |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// XML nodes declaration - non-user data |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$attforblock = new backup_nested_element('attforblock', array('id'), array( |
|||
'name', 'grade')); |
|||
|
|||
$statuses = new backup_nested_element('statuses'); |
|||
$status = new backup_nested_element('status', array('id'), array( |
|||
'acronym', 'description', 'grade', 'visible', 'deleted')); |
|||
|
|||
$sessions = new backup_nested_element('sessions'); |
|||
$session = new backup_nested_element('session', array('id'), array( |
|||
'groupid', 'sessdate', 'duration', 'lasttaken', 'lasttakenby', |
|||
'timemodified', 'description', 'descriptionformat')); |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// XML nodes declaration - user data |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$logs = new backup_nested_element('logs'); |
|||
$log = new backup_nested_element('log', array('id'), array( |
|||
'sessionid', 'studentid', 'statusid', 'lasttaken', 'statusset', |
|||
'timetaken', 'takenby', 'remarks')); |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// build the tree in the order needed for restore |
|||
//////////////////////////////////////////////////////////////////////// |
|||
$attforblock->add_child($statuses); |
|||
$statuses->add_child($status); |
|||
|
|||
$attforblock->add_child($sessions); |
|||
$sessions->add_child($session); |
|||
|
|||
$session->add_child($logs); |
|||
$logs->add_child($log); |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// data sources - non-user data |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$attforblock->set_source_table('attforblock', array('id' => backup::VAR_ACTIVITYID)); |
|||
|
|||
$status->set_source_table('attendance_statuses', array('attendanceid' => backup::VAR_PARENTID)); |
|||
|
|||
$session->set_source_table('attendance_sessions', array('attendanceid' => backup::VAR_PARENTID)); |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// data sources - user related data |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
if ($userinfo) { |
|||
$log->set_source_table('attendance_log', array('sessionid' => backup::VAR_PARENTID)); |
|||
} |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// id annotations |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$session->annotate_ids('user', 'lasttakenby'); |
|||
$session->annotate_ids('group', 'groupid'); |
|||
$log->annotate_ids('user', 'studentid'); |
|||
$log->annotate_ids('user', 'takenby'); |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// file annotations |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$session->annotate_files('mod_attforblock', 'session', 'id'); |
|||
|
|||
// return the root element (workshop), wrapped into standard activity structure |
|||
return $this->prepare_activity_structure($attforblock); |
|||
} |
|||
} |
@ -0,0 +1,133 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* @package mod |
|||
* @subpackage attforblock |
|||
* @copyright 2011 Artem Andreev <andreev.artem@gmail.com> |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|||
*/ |
|||
|
|||
defined('MOODLE_INTERNAL') || die(); |
|||
|
|||
require_once($CFG->dirroot . '/mod/attforblock/backup/moodle2/restore_attforblock_stepslib.php'); |
|||
|
|||
/** |
|||
* attforblock restore task that provides all the settings and steps to perform one |
|||
* complete restore of the activity |
|||
*/ |
|||
class restore_attforblock_activity_task extends restore_activity_task { |
|||
|
|||
/** |
|||
* Define (add) particular settings this activity can have |
|||
*/ |
|||
protected function define_my_settings() { |
|||
// No particular settings for this activity |
|||
} |
|||
|
|||
/** |
|||
* Define (add) particular steps this activity can have |
|||
*/ |
|||
protected function define_my_steps() { |
|||
// Choice only has one structure step |
|||
$this->add_step(new restore_attforblock_activity_structure_step('attforblock_structure', 'attforblock.xml')); |
|||
} |
|||
|
|||
/** |
|||
* Define the contents in the activity that must be |
|||
* processed by the link decoder |
|||
*/ |
|||
static public function define_decode_contents() { |
|||
$contents = array(); |
|||
|
|||
$contents[] = new restore_decode_content('attendance_sessions', |
|||
array('description'), 'attforblock_session'); |
|||
|
|||
return $contents; |
|||
} |
|||
|
|||
/** |
|||
* Define the decoding rules for links belonging |
|||
* to the activity to be executed by the link decoder |
|||
*/ |
|||
static public function define_decode_rules() { |
|||
$rules = array(); |
|||
|
|||
$rules[] = new restore_decode_rule('ATTFORBLOCKVIEWBYID', |
|||
'/mod/attforblock/view.php?id=$1', 'course_module'); |
|||
$rules[] = new restore_decode_rule('ATTFORBLOCKVIEWBYIDSTUD', |
|||
'/mod/attforblock/view.php?id=$1&studentid=$2', array('course_module', 'user')); |
|||
|
|||
return $rules; |
|||
|
|||
} |
|||
|
|||
/** |
|||
* Define the restore log rules that will be applied |
|||
* by the {@link restore_logs_processor} when restoring |
|||
* attforblock logs. It must return one array |
|||
* of {@link restore_log_rule} objects |
|||
*/ |
|||
static public function define_restore_log_rules() { |
|||
$rules = array(); |
|||
|
|||
// TODO: log restore |
|||
/* |
|||
$rules[] = new restore_log_rule('attforblock', 'add', 'view.php?id={course_module}', '{attforblock}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update', 'view.php?id={course_module}', '{attforblock}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'view', 'view.php?id={course_module}', '{attforblock}'); |
|||
|
|||
$rules[] = new restore_log_rule('attforblock', 'add assessment', |
|||
'assessment.php?asid={attforblock_assessment}', '{attforblock_submission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update assessment', |
|||
'assessment.php?asid={attforblock_assessment}', '{attforblock_submission}'); |
|||
|
|||
$rules[] = new restore_log_rule('attforblock', 'add reference assessment', |
|||
'exassessment.php?asid={attforblock_referenceassessment}', '{attforblock_examplesubmission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update reference assessment', |
|||
'exassessment.php?asid={attforblock_referenceassessment}', '{attforblock_examplesubmission}'); |
|||
|
|||
$rules[] = new restore_log_rule('attforblock', 'add example assessment', |
|||
'exassessment.php?asid={attforblock_exampleassessment}', '{attforblock_examplesubmission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update example assessment', |
|||
'exassessment.php?asid={attforblock_exampleassessment}', '{attforblock_examplesubmission}'); |
|||
|
|||
$rules[] = new restore_log_rule('attforblock', 'view submission', |
|||
'submission.php?cmid={course_module}&id={attforblock_submission}', '{attforblock_submission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'add submission', |
|||
'submission.php?cmid={course_module}&id={attforblock_submission}', '{attforblock_submission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update submission', |
|||
'submission.php?cmid={course_module}&id={attforblock_submission}', '{attforblock_submission}'); |
|||
|
|||
$rules[] = new restore_log_rule('attforblock', 'view example', |
|||
'exsubmission.php?cmid={course_module}&id={attforblock_examplesubmission}', '{attforblock_examplesubmission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'add example', |
|||
'exsubmission.php?cmid={course_module}&id={attforblock_examplesubmission}', '{attforblock_examplesubmission}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update example', |
|||
'exsubmission.php?cmid={course_module}&id={attforblock_examplesubmission}', '{attforblock_examplesubmission}'); |
|||
|
|||
$rules[] = new restore_log_rule('attforblock', 'update aggregate grades', 'view.php?id={course_module}', '{attforblock}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update switch phase', 'view.php?id={course_module}', '[phase]'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update clear aggregated grades', 'view.php?id={course_module}', '{attforblock}'); |
|||
$rules[] = new restore_log_rule('attforblock', 'update clear assessments', 'view.php?id={course_module}', '{attforblock}'); |
|||
* |
|||
*/ |
|||
|
|||
return $rules; |
|||
} |
|||
|
|||
/** |
|||
* Define the restore log rules that will be applied |
|||
* by the {@link restore_logs_processor} when restoring |
|||
* course logs. It must return one array |
|||
* of {@link restore_log_rule} objects |
|||
* |
|||
* Note this rules are applied when restoring course logs |
|||
* by the restore final task, but are defined here at |
|||
* activity level. All them are rules not linked to any module instance (cmid = 0) |
|||
*/ |
|||
static public function define_restore_log_rules_for_course() { |
|||
$rules = array(); |
|||
|
|||
return $rules; |
|||
} |
|||
} |
@ -0,0 +1,118 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* @package mod |
|||
* @subpackage attforblock |
|||
* @copyright 2011 Artem Andreev <andreev.artem@gmail.com> |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|||
*/ |
|||
|
|||
defined('MOODLE_INTERNAL') || die(); |
|||
|
|||
/** |
|||
* Define all the restore steps that will be used by the restore_attforblock_activity_task |
|||
*/ |
|||
|
|||
/** |
|||
* Structure step to restore one attforblock activity |
|||
*/ |
|||
class restore_attforblock_activity_structure_step extends restore_activity_structure_step { |
|||
|
|||
protected function define_structure() { |
|||
|
|||
$paths = array(); |
|||
|
|||
$userinfo = $this->get_setting_value('userinfo'); // are we including userinfo? |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// XML interesting paths - non-user data |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$paths[] = new restore_path_element('attforblock', '/activity/attforblock'); |
|||
|
|||
$paths[] = new restore_path_element('attforblock_status', |
|||
'/activity/attforblock/statuses/status'); |
|||
|
|||
$paths[] = new restore_path_element('attforblock_session', |
|||
'/activity/attforblock/sessions/session'); |
|||
|
|||
// End here if no-user data has been selected |
|||
if (!$userinfo) { |
|||
return $this->prepare_activity_structure($paths); |
|||
} |
|||
|
|||
//////////////////////////////////////////////////////////////////////// |
|||
// XML interesting paths - user data |
|||
//////////////////////////////////////////////////////////////////////// |
|||
|
|||
$paths[] = new restore_path_element('attforblock_log', |
|||
'/activity/attforblock/sessions/session/logs/log'); |
|||
|
|||
// Return the paths wrapped into standard activity structure |
|||
return $this->prepare_activity_structure($paths); |
|||
} |
|||
|
|||
protected function process_attforblock($data) { |
|||
global $DB; |
|||
|
|||
$data = (object)$data; |
|||
$oldid = $data->id; |
|||
$data->course = $this->get_courseid(); |
|||
|
|||
// insert the attforblock record |
|||
$newitemid = $DB->insert_record('attforblock', $data); |
|||
// immediately after inserting "activity" record, call this |
|||
$this->apply_activity_instance($newitemid); |
|||
} |
|||
|
|||
protected function process_attforblock_status($data) { |
|||
global $DB; |
|||
|
|||
$data = (object)$data; |
|||
$oldid = $data->id; |
|||
|
|||
$data->attendanceid = $this->get_new_parentid('attforblock'); |
|||
|
|||
$newitemid = $DB->insert_record('attendance_statuses', $data); |
|||
$this->set_mapping('attforblock_status', $oldid, $newitemid); |
|||
} |
|||
|
|||
protected function process_attforblock_session($data) { |
|||
global $DB; |
|||
|
|||
$data = (object)$data; |
|||
$oldid = $data->id; |
|||
|
|||
$data->attendanceid = $this->get_new_parentid('attforblock'); |
|||
$data->groupid = $this->get_mappingid('group', $data->groupid); |
|||
$data->sessdate = $this->apply_date_offset($data->sessdate); |
|||
$data->lasttaken = $this->apply_date_offset($data->lasttaken); |
|||
$data->lasttakenby = $this->get_mappingid('user', $data->lasttakenby); |
|||
$data->timemodified = $this->apply_date_offset($data->timemodified); |
|||
|
|||
$newitemid = $DB->insert_record('attendance_sessions', $data); |
|||
$this->set_mapping('attforblock_session', $oldid, $newitemid, true); |
|||
} |
|||
|
|||
protected function process_attforblock_log($data) { |
|||
global $DB; |
|||
|
|||
$data = (object)$data; |
|||
$oldid = $data->id; |
|||
|
|||
$data->sessionid = $this->get_mappingid('attforblock_session', $data->sessionid); |
|||
$data->studentid = $this->get_mappingid('user', $data->studentid); |
|||
$data->statusid = $this->get_mappingid('attforblock_status', $data->statusid); |
|||
$statusset = explode(',', $data->statusset); |
|||
foreach ($statusset as $st) $st = $this->get_mappingid('attforblock_status', $st); |
|||
$data->statusset = implode(',', $statusset); |
|||
$data->timetaken = $this->apply_date_offset($data->timetaken); |
|||
$data->takenby = $this->get_mappingid('user', $data->takenby); |
|||
|
|||
$newitemid = $DB->insert_record('attendance_log', $data); |
|||
} |
|||
|
|||
protected function after_execute() { |
|||
$this->add_related_files('mod_attforblock', 'session', 'attforblock_session'); |
|||
} |
|||
} |
Loading…
Reference in new issue