<?php

/**
 * Define all the backup steps that will be used by the backup_iassign_activity_task
 *
 * @author Patricia Alves Rodrigues
 * @author Leo^nidas de Oliveira Branda~o
 * @version v 1.0 2012
 * @package mod_iassign_backup
 * @since 2012
 * @cite iMath (http://www.matematica.br) - LInE (www.usp.br/line) - Computer Science Dep. of IME-USP (Brazil)
 * 
 * <b>License</b> 
 *  - http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 *  
 * @see restore_activity_task
 */

// Moodle core defines constant MOODLE_INTERNAL which shall be used to make sure that the script is included and not called directly.
defined('MOODLE_INTERNAL') || die();

require_once($CFG->dirroot . '/mod/iassign/backup/moodle2/restore_iassign_stepslib.php');


/// iAssign restore task that provides all the settings and steps to perform one complete restore of the activity.
class restore_iassign_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 () {
    // iAssign only has one structure step
    $this->add_step(new restore_iassign_activity_structure_step('iassign_structure', 'iassign.xml'));
    }


  // Define the contents in the activity that must be
  // processed by the link decoder.
  // @return array Return a content of activity
  static public function define_decode_contents () {
    $contents = array();

    $contents[] = new restore_decode_content('iassign', array('name'), 'iassign');

    return $contents;
    }


  // Define the decoding rules for links belonging
  // to the activity to be executed by the link decoder.
  // @return array Return the restore decode rule.
  static public function define_decode_rules () {
    $rules = array();

    $rules[] = new restore_decode_rule('IASSIGNVIEWBYID', '/mod/iassign/view.php?id=$1', 'course_module');
    $rules[] = new restore_decode_rule('IASSIGNINDEX', '/mod/iassign/index.php?id=$1', 'course_module');

    return $rules;
    }

  // Define the restore log rules that will be applied
  // by the {@link restore_logs_processor} when restoring
  // iassign logs. It must return one array
  // of {@link restore_log_rule} objects.
  // @return array Return the restore log rule.
  static public function define_restore_log_rules () {
    $rules = array();

    $rules[] = new restore_log_rule('iassign', 'add', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'update', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'view', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'view submission', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'upload', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'update comment', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'update submission', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'delete iassign', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'add comment', 'view.php?id={course_module}', '{iassign}');
    $rules[] = new restore_log_rule('iassign', 'add submission', 'view.php?id={course_module}', '{iassign}');
    // more...

    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)
  // @return array Return the restore log rule of course.
  static public function define_restore_log_rules_for_course () {
    $rules = array();
    return $rules;
    }

  }