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;
 }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
    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}&sectionid={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;
 }