public static function get_instance($task, $values) { // If the singleton isn't set or if the task is another one, create new instance if (!isset(self::$instance) || self::$task !== $task) { self::$task = $task; self::$instance = new restore_logs_processor($values); } return self::$instance; }
protected function process_log($data) { global $DB; $data = (object) $data; $data->time = $this->apply_date_offset($data->time); $data->userid = $this->get_mappingid('user', $data->userid); $data->course = $this->get_courseid(); $data->cmid = $this->task->get_moduleid(); // For any reason user wasn't remapped ok, stop processing this if (empty($data->userid)) { return; } // Everything ready, let's delegate to the restore_logs_processor // Set some fixed values that will save tons of DB requests $values = array('course' => $this->get_courseid(), 'course_module' => $this->task->get_moduleid(), $this->task->get_modulename() => $this->task->get_activityid()); // Get instance and process log record $data = restore_logs_processor::get_instance($this->task, $values)->process_log_record($data); // If we have data, insert it, else something went wrong in the restore_logs_processor if ($data) { if (empty($data->url)) { $data->url = ''; } if (empty($data->info)) { $data->info = ''; } // Store the data in the legacy log table if we are still using it. $manager = get_log_manager(); if (method_exists($manager, 'legacy_add_to_log')) { $manager->legacy_add_to_log($data->course, $data->module, $data->action, $data->url, $data->info, $data->cmid, $data->userid); } } }
protected function process_log($data) { global $DB; $data = (object)($data); $data->time = $this->apply_date_offset($data->time); $data->userid = $this->get_mappingid('user', $data->userid); $data->course = $this->get_courseid(); $data->cmid = $this->task->get_moduleid(); // For any reason user wasn't remapped ok, stop processing this if (empty($data->userid)) { return; } // Everything ready, let's delegate to the restore_logs_processor // Set some fixed values that will save tons of DB requests $values = array( 'course' => $this->get_courseid(), 'course_module' => $this->task->get_moduleid(), $this->task->get_modulename() => $this->task->get_activityid()); // Get instance and process log record $data = restore_logs_processor::get_instance($this->task, $values)->process_log_record($data); // If we have data, insert it, else something went wrong in the restore_logs_processor if ($data) { $DB->insert_record('log', $data); } }
/** * 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 these are course logs, but are defined and restored * in final task because we need all the activities to be * restored in order to handle some log records properly */ public static function define_restore_log_rules() { $rules = array(); // module 'course' rules $rules[] = new restore_log_rule('course', 'view', 'view.php?id={course}', '{course}'); $rules[] = new restore_log_rule('course', 'guest', 'view.php?id={course}', null); $rules[] = new restore_log_rule('course', 'user report', 'user.php?id={course}&user={user}&mode=[mode]', null); $rules[] = new restore_log_rule('course', 'add mod', '../mod/[modname]/view.php?id={course_module}', '[modname] {[modname]}'); $rules[] = new restore_log_rule('course', 'update mod', '../mod/[modname]/view.php?id={course_module}', '[modname] {[modname]}'); $rules[] = new restore_log_rule('course', 'delete mod', 'view.php?id={course}', null); $rules[] = new restore_log_rule('course', 'update', 'view.php?id={course}', ''); $rules[] = new restore_log_rule('course', 'enrol', 'view.php?id={course}', '{user}'); $rules[] = new restore_log_rule('course', 'unenrol', 'view.php?id={course}', '{user}'); $rules[] = new restore_log_rule('course', 'editsection', 'editsection.php?id={course_section}', null); $rules[] = new restore_log_rule('course', 'new', 'view.php?id={course}', ''); $rules[] = new restore_log_rule('course', 'recent', 'recent.php?id={course}', ''); $rules[] = new restore_log_rule('course', 'report log', 'report/log/index.php?id={course}', '{course}'); $rules[] = new restore_log_rule('course', 'report live', 'report/live/index.php?id={course}', '{course}'); $rules[] = new restore_log_rule('course', 'report outline', 'report/outline/index.php?id={course}', '{course}'); $rules[] = new restore_log_rule('course', 'report participation', 'report/participation/index.php?id={course}', '{course}'); $rules[] = new restore_log_rule('course', 'report stats', 'report/stats/index.php?id={course}', '{course}'); $rules[] = new restore_log_rule('course', 'view section', 'view.php?id={course}§ionid={course_section}', '{course_section}'); // module 'grade' rules $rules[] = new restore_log_rule('grade', 'update', 'report/grader/index.php?id={course}', null); // module 'user' rules $rules[] = new restore_log_rule('user', 'view', 'view.php?id={user}&course={course}', '{user}'); $rules[] = new restore_log_rule('user', 'change password', 'view.php?id={user}&course={course}', '{user}'); $rules[] = new restore_log_rule('user', 'login', 'view.php?id={user}&course={course}', '{user}'); $rules[] = new restore_log_rule('user', 'logout', 'view.php?id={user}&course={course}', '{user}'); $rules[] = new restore_log_rule('user', 'view all', 'index.php?id={course}', ''); $rules[] = new restore_log_rule('user', 'update', 'view.php?id={user}&course={course}', ''); // rules from other tasks (activities) not belonging to one module instance (cmid = 0), so are restored here $rules = array_merge($rules, restore_logs_processor::register_log_rules_for_course()); // Calendar rules. $rules[] = new restore_log_rule('calendar', 'add', 'event.php?action=edit&id={event}', '[name]'); $rules[] = new restore_log_rule('calendar', 'edit', 'event.php?action=edit&id={event}', '[name]'); $rules[] = new restore_log_rule('calendar', 'edit all', 'event.php?action=edit&id={event}', '[name]'); // TODO: Other logs like 'upload'... will go here return $rules; }