/**
  * Define the common setting that any restore activity will have
  */
 protected function define_settings()
 {
     // All the settings related to this activity will include this prefix
     $settingprefix = $this->info->modulename . '_' . $this->info->moduleid . '_';
     // All these are common settings to be shared by all activities
     // Define activity_include (to decide if the whole task must be really executed)
     // Dependent of:
     // - activities root setting
     // - section_included setting (if exists)
     $settingname = $settingprefix . 'included';
     $activity_included = new restore_activity_generic_setting($settingname, base_setting::IS_BOOLEAN, true);
     $activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename), $this->modulename, array('class' => 'iconlarge icon-post')));
     $this->add_setting($activity_included);
     // Look for "activities" root setting
     $activities = $this->plan->get_setting('activities');
     $activities->add_dependency($activity_included);
     // Look for "section_included" section setting (if exists)
     $settingname = 'section_' . $this->info->sectionid . '_included';
     if ($this->plan->setting_exists($settingname)) {
         $section_included = $this->plan->get_setting($settingname);
         $section_included->add_dependency($activity_included);
     }
     // Define activity_userinfo. Dependent of:
     // - users root setting
     // - section_userinfo setting (if exists)
     // - activity_included setting.
     $settingname = $settingprefix . 'userinfo';
     $defaultvalue = false;
     if (isset($this->info->settings[$settingname]) && $this->info->settings[$settingname]) {
         // Only enabled when available
         $defaultvalue = true;
     }
     $activity_userinfo = new restore_activity_userinfo_setting($settingname, base_setting::IS_BOOLEAN, $defaultvalue);
     if (!$defaultvalue) {
         // This is a bit hacky, but if there is no user data to restore, then
         // we replace the standard check-box with a select menu with the
         // single choice 'No', and the select menu is clever enough that if
         // there is only one choice, it just displays a static string.
         //
         // It would probably be better design to have a special UI class
         // setting_ui_checkbox_or_no, rather than this hack, but I am not
         // going to do that today.
         $activity_userinfo->set_ui(new backup_setting_ui_select($activity_userinfo, '-', array(0 => get_string('no'))));
     } else {
         $activity_userinfo->get_ui()->set_label('-');
     }
     $this->add_setting($activity_userinfo);
     // Look for "users" root setting
     $users = $this->plan->get_setting('users');
     $users->add_dependency($activity_userinfo);
     // Look for "section_userinfo" section setting (if exists)
     $settingname = 'section_' . $this->info->sectionid . '_userinfo';
     if ($this->plan->setting_exists($settingname)) {
         $section_userinfo = $this->plan->get_setting($settingname);
         $section_userinfo->add_dependency($activity_userinfo);
     }
     // Look for "activity_included" setting.
     $activity_included->add_dependency($activity_userinfo);
     // End of common activity settings, let's add the particular ones.
     $this->define_my_settings();
 }
 /**
  * Define the common setting that any restore activity will have
  */
 protected function define_settings()
 {
     // All the settings related to this activity will include this prefix
     $settingprefix = $this->info->modulename . '_' . $this->info->moduleid . '_';
     // All these are common settings to be shared by all activities
     // Define activity_include (to decide if the whole task must be really executed)
     // Dependent of:
     // - activities root setting
     // - section_included setting (if exists)
     $settingname = $settingprefix . 'included';
     $activity_included = new restore_activity_generic_setting($settingname, base_setting::IS_BOOLEAN, true);
     $activity_included->get_ui()->set_icon(new pix_icon('icon', get_string('pluginname', $this->modulename), $this->modulename));
     $this->add_setting($activity_included);
     // Look for "activities" root setting
     $activities = $this->plan->get_setting('activities');
     $activities->add_dependency($activity_included);
     // Look for "section_included" section setting (if exists)
     $settingname = 'section_' . $this->info->sectionid . '_included';
     if ($this->plan->setting_exists($settingname)) {
         $section_included = $this->plan->get_setting($settingname);
         $section_included->add_dependency($activity_included);
     }
     // Define activity_userinfo. Dependent of:
     // - users root setting
     // - section_userinfo setting (if exists)
     // - activity_included setting
     $settingname = $settingprefix . 'userinfo';
     $selectvalues = array(0 => get_string('no'));
     // Safer options
     $defaultvalue = false;
     // Safer default
     if (isset($this->info->settings[$settingname]) && $this->info->settings[$settingname]) {
         // Only enabled when available
         $selectvalues = array(1 => get_string('yes'), 0 => get_string('no'));
         $defaultvalue = true;
     }
     $activity_userinfo = new restore_activity_userinfo_setting($settingname, base_setting::IS_BOOLEAN, $defaultvalue);
     $activity_userinfo->set_ui(new backup_setting_ui_select($activity_userinfo, get_string('includeuserinfo', 'backup'), $selectvalues));
     $this->add_setting($activity_userinfo);
     // Look for "users" root setting
     $users = $this->plan->get_setting('users');
     $users->add_dependency($activity_userinfo);
     // Look for "section_userinfo" section setting (if exists)
     $settingname = 'section_' . $this->info->sectionid . '_userinfo';
     if ($this->plan->setting_exists($settingname)) {
         $section_userinfo = $this->plan->get_setting($settingname);
         $section_userinfo->add_dependency($activity_userinfo);
     }
     // Look for "activity_included" setting
     $activity_included->add_dependency($activity_userinfo);
     // End of common activity settings, let's add the particular ones
     $this->define_my_settings();
 }