/**
  * This function makes all the necessary calls to {@link restore_decode_content_links_worker()}
  * function in order to decode contents of this block from the backup
  * format to destination site/course in order to mantain inter-activities
  * working in the backup/restore process.
  *
  * This is called from {@link restore_decode_content_links()} function in the restore process.
  *
  * NOTE: There is no block instance when this method is called.
  *
  * @param object $restore Standard restore object
  * @return boolean
  **/
 function decode_content_links_caller($restore)
 {
     global $CFG;
     if ($restored_blocks = get_records_select("backup_ids", "table_name = 'block_instance' AND backup_code = {$restore->backup_unique_code} AND new_id > 0", "", "new_id")) {
         $restored_blocks = implode(',', array_keys($restored_blocks));
         $sql = "SELECT bi.*\n                      FROM {$CFG->prefix}block_instance bi\n                           JOIN {$CFG->prefix}block b ON b.id = bi.blockid\n                     WHERE b.name = 'html' AND bi.id IN ({$restored_blocks})";
         if ($instances = get_records_sql($sql)) {
             foreach ($instances as $instance) {
                 $blockobject = block_instance('featured', $instance);
                 $blockobject->config->text = restore_decode_absolute_links($blockobject->config->text);
                 $blockobject->config->text = restore_decode_content_links_worker($blockobject->config->text, $restore);
                 $blockobject->instance_config_commit($blockobject->pinned);
             }
         }
     }
     return true;
 }
Example #2
0
function backup_todb($data)
{
    // MDL-10770
    if ($data === '$@NULL@$') {
        return null;
    } else {
        return restore_decode_absolute_links($data);
    }
}
function wiki_insert_page_from_wiki($wikipage, $dfwikiid, $mode, $course, $name, $oldwikiid, $groupid)
{
    global $CFG;
    //search for the old wiki cm->id
    $modul = get_record("modules", "name", 'wiki');
    $coursemodule = get_record_sql('SELECT *
                    FROM ' . $CFG->prefix . 'course_modules
                    WHERE module=' . $modul->id . ' AND instance=' . $dfwikiid);
    $page->pagename = restore_decode_absolute_links(addslashes($wikipage->pagename));
    $page->version = $wikipage->version;
    $page->content = wiki_treat_content(restore_decode_absolute_links(addslashes($wikipage->content)), $oldwikiid);
    $page->author = wiki_get_username($wikipage->author);
    $page->created = $wikipage->created;
    $page->lastmodified = $wikipage->lastmodified;
    $pagerefs = str_replace("\n", "|", restore_decode_absolute_links(addslashes($wikipage->refs)));
    $page_refs = str_replace("||", "", $pagerefs);
    $page->refs = wiki_treat_internal_ref($page_refs);
    $page->hits = $wikipage->hits;
    $page->editable = '1';
    $page->dfwiki = $dfwikiid;
    switch ($mode) {
        case '0':
            $page->editor = 'ewiki';
            break;
        case '1':
            $page->editor = 'ewiki';
            break;
        case '2':
            $page->editor = 'htmleditor';
            break;
        default:
            break;
    }
    $page->groupid = $groupid;
    if ($page->content != '') {
        if (!insert_record('wiki_pages', addslashes($page))) {
        }
        backup_flush(300);
    }
}
Example #4
0
function backup_todb($data, $addslashes = true)
{
    // MDL-10770
    if ($data === '$@NULL@$') {
        return null;
    } else {
        if ($addslashes) {
            $data = addslashes($data);
        }
        return restore_decode_absolute_links($data);
    }
}
Example #5
0
 function restore_decode_absolute_links_in_config(&$config)
 {
     $oldtext = $config->text;
     $config->text = restore_decode_absolute_links($oldtext);
     return $config->text != $oldtext;
 }
function wiki_insert_page_from_dfwiki($dfwikipage, $newwiki)
{
    $page->pagename = restore_decode_absolute_links(addslashes($dfwikipage->pagename));
    $page->version = $dfwikipage->version;
    $page->content = $dfwikipage->content;
    $page->author = $dfwikipage->author;
    //get the user id from the author username
    $user = get_record('user', 'username', addslashes($dfwikipage->author));
    $page->userid = $user->id;
    $page->created = $dfwikipage->created;
    $page->lastmodified = $dfwikipage->lastmodified;
    $page->refs = $dfwikipage->refs;
    $page->hits = $dfwikipage->hits;
    $page->editable = $dfwikipage->editable;
    $page->dfwiki = $newwiki;
    $page->editor = $dfwikipage->editor;
    $page->groupid = $dfwikipage->groupid;
    $page->ownerid = $dfwikipage->ownerid;
    $page->highlight = $dfwikipage->destacar;
    $page->votes = $dfwikipage->votes;
    //insert here new added dfwiki_page table fields
    if (!insert_record('wiki_pages', addslashes($page))) {
        error('Can\'t insert page record');
    }
}
function wiki_read_xml_ewiki($info, $restore)
{
    global $CFG, $COURSE;
    //Search the groupmode in coursemodule
    $wikioldid = $info["ID"]["0"]["#"];
    $newcourseid = $restore->course_id;
    $coursemoduleid = $restore->mods['wiki']->instances[$wikioldid]->restored_as_course_module;
    $coursemodule = get_records_sql('SELECT *
                    FROM ' . $CFG->prefix . 'course_modules
                    WHERE id=' . $coursemoduleid);
    $groupmode = $coursemodule[$coursemoduleid]->groupmode;
    foreach ($info as $name => $value) {
        if ($name != "ENTRIES") {
            //Tratamos la wiki
            $data['wiki']['groupmode'] = $groupmode;
            if ($name == "NAME") {
                $data['wiki']['name'] = $value['0']['#'];
                $data['wiki']['pagename'] = $value['0']['#'];
            } elseif ($name == "PAGENAME") {
                //nothing
            } elseif ($name == "SUMMARY") {
                $data['wiki']['intro'] = $value['0']['#'];
            } elseif ($name == "HTMLMODE") {
                switch ($value['0']['#']) {
                    case '0':
                        $data['wiki']['editor'] = 'ewiki';
                        break;
                    case '1':
                        $data['wiki']['editor'] = 'ewiki';
                        break;
                    case '2':
                        $data['wiki']['editor'] = 'htmleditor';
                        break;
                    default:
                        break;
                }
            } elseif ($name == "TIMEMODIFIED") {
                $data['wiki'][strtolower($name)] = TIME();
            } elseif ($name == "WTYPE") {
                $wtype = $value['0']['#'];
                if ($wtype == 'teacher') {
                    $data['wiki']['editable'] = '0';
                    $data['wiki']['studentmode'] = '0';
                } elseif ($wtype == 'student') {
                    $data['wiki']['editable'] = '1';
                    if ($groupmode == '0') {
                        $data['wiki']['studentmode'] = '1';
                    } else {
                        $data['wiki']['studentmode'] = '2';
                    }
                } else {
                    //$wtype = 'group'
                    $data['wiki']['editable'] = '1';
                    $data['wiki']['studentmode'] = '0';
                }
            } else {
                $data['wiki'][strtolower($name)] = $value['0']['#'];
            }
        } else {
            $dataentries = $value['0']['#']['ENTRY'];
            $i = 0;
            foreach ($dataentries as $dataentry) {
                $entrygroupid = $dataentry['#']['GROUPID']['0']['#'];
                foreach ($dataentry as $datapages) {
                    $datapage = $datapages['PAGES']['0']['#']['PAGE'];
                    foreach ($datapage as $ewikipage) {
                        if ($groups = get_record_sql('SELECT *
                                    FROM ' . $CFG->prefix . 'groups g
                                    WHERE g.id=' . $entrygroupid)) {
                            $groupname = $groups->name;
                        }
                        if ($groups = get_record_sql('SELECT *
                                        FROM ' . $CFG->prefix . 'groups g
                                        WHERE g.name=\'' . $groupname . '\'
                                        AND g.courseid = ' . $newcourseid)) {
                            $groupid = $groups->id;
                        }
                        $entryuserid = $ewikipage['#']['USERID']['0']['#'];
                        if ($wtype == 'student' && $entrygroupid == '0' && $groupmode != '0') {
                            if ($user_groups = get_records_sql('SELECT gm.id as groupsmembersid, u.id, g.id as groupid
                                                                        FROM ' . $CFG->prefix . 'groups g,
                                                                        ' . $CFG->prefix . 'groups_members gm,
                                                                        ' . $CFG->prefix . 'user u
                                                                        WHERE g.courseid=\'' . $newcourseid . '\'
                                                                        AND u.id = \'' . $entryuserid . '\'
                                                                        AND g.id = gm.groupid
                                                                        AND u.id = gm.userid')) {
                                foreach ($user_groups as $user_group) {
                                    $data['wiki_pages'][$i]['id'] = $ewikipage['#']['ID']['0']['#'];
                                    $data['wiki_pages'][$i]['pagename'] = $ewikipage['#']['PAGENAME']['0']['#'];
                                    $data['wiki_pages'][$i]['version'] = $ewikipage['#']['VERSION']['0']['#'];
                                    $data['wiki_pages'][$i]['content'] = restore_decode_absolute_links(addslashes(wiki_treat_content($ewikipage['#']['CONTENT']['0']['#'])));
                                    $data['wiki_pages'][$i]['version'] = $ewikipage['#']['VERSION']['0']['#'];
                                    $pagerefs = restore_decode_absolute_links(addslashes($ewikipage['#']['REFS']['0']['#']));
                                    $pagerefs = str_replace("\$@LINEFEED@\$", "|", $pagerefs);
                                    $pagerefs = str_replace("||", "", $pagerefs);
                                    $wikipages['importfrombackup'][$i]['refs'] = wiki_treat_internal_ref($pagerefs);
                                    $data['wiki_pages'][$i]['lastmodified'] = $ewikipage['#']['LASTMODIFIED']['0']['#'];
                                    $data['wiki_pages'][$i]['oldentryid'] = $info["ENTRIES"]["0"]["#"]["ENTRY"]["0"]["#"]["ID"]["0"]["#"];
                                    $data['wiki_pages'][$i]['oldid'] = $info["ID"]["0"]["#"];
                                    $data['wiki_pages'][$i]['editor'] = $data['wiki']['editor'];
                                    $data['wiki_pages'][$i]['userid'] = $ewikipage['#']['USERID']['0']['#'];
                                    $data['wiki_pages'][$i]['groupid'] = $user_group->groupid;
                                    if ($wtype == 'teacher') {
                                        $data['wiki_pages'][$i]['editable'] = '0';
                                        $data['wiki_pages'][$i]['ownerid'] = '0';
                                    } elseif ($wtype == 'group') {
                                        $data['wiki_pages'][$i]['editable'] = '1';
                                        $data['wiki_pages'][$i]['ownerid'] = '0';
                                    } else {
                                        $data['wiki_pages'][$i]['editable'] = '1';
                                        $data['wiki_pages'][$i]['ownerid'] = $entryuserid;
                                    }
                                    $i++;
                                }
                            }
                        } else {
                            $data['wiki_pages'][$i]['id'] = $ewikipage['#']['ID']['0']['#'];
                            $data['wiki_pages'][$i]['pagename'] = $ewikipage['#']['PAGENAME']['0']['#'];
                            $data['wiki_pages'][$i]['version'] = $ewikipage['#']['VERSION']['0']['#'];
                            $data['wiki_pages'][$i]['content'] = restore_decode_absolute_links(addslashes(wiki_treat_content($ewikipage['#']['CONTENT']['0']['#'])));
                            $data['wiki_pages'][$i]['version'] = $ewikipage['#']['VERSION']['0']['#'];
                            $pagerefs = restore_decode_absolute_links(addslashes($ewikipage['#']['REFS']['0']['#']));
                            $pagerefs = str_replace("\$@LINEFEED@\$", "|", $pagerefs);
                            $pagerefs = str_replace("||", "", $pagerefs);
                            $wikipages['importfrombackup'][$i]['refs'] = wiki_treat_internal_ref($pagerefs);
                            $data['wiki_pages'][$i]['lastmodified'] = $ewikipage['#']['LASTMODIFIED']['0']['#'];
                            $data['wiki_pages'][$i]['oldentryid'] = $info["ENTRIES"]["0"]["#"]["ENTRY"]["0"]["#"]["ID"]["0"]["#"];
                            $data['wiki_pages'][$i]['oldid'] = $info["ID"]["0"]["#"];
                            $data['wiki_pages'][$i]['editor'] = $data['wiki']['editor'];
                            $data['wiki_pages'][$i]['userid'] = $ewikipage['#']['USERID']['0']['#'];
                            if ($groupmode == '0') {
                                $data['wiki_pages'][$i]['groupid'] = '0';
                            } else {
                                $data['wiki_pages'][$i]['groupid'] = $groupid;
                            }
                            if ($wtype == 'teacher') {
                                $data['wiki_pages'][$i]['editable'] = '0';
                                $data['wiki_pages'][$i]['ownerid'] = '0';
                            } elseif ($wtype == 'group') {
                                $data['wiki_pages'][$i]['editable'] = '1';
                                $data['wiki_pages'][$i]['ownerid'] = '0';
                            } else {
                                $data['wiki_pages'][$i]['editable'] = '1';
                                $data['wiki_pages'][$i]['ownerid'] = $entryuserid;
                            }
                            $i++;
                        }
                    }
                }
            }
        }
    }
    return $data;
}
function wiki_read_xml_ewiki($data)
{
    if (isset($data['ENTRIES']['0']['#']['ENTRY'])) {
        $htmlmode = $data['HTMLMODE']['0']['#'];
        $dataentries = $data['ENTRIES']['0']['#']['ENTRY'];
        $i = 0;
        foreach ($dataentries as $dataentry) {
            $groupid = $dataentry['#']['GROUPID']['0']['#'];
            foreach ($dataentry as $datapages) {
                $datapage = $datapages['PAGES']['0']['#']['PAGE'];
                foreach ($datapage as $ewikipage) {
                    $wikipages['importfrombackup'][$i]['id'] = $ewikipage['#']['ID']['0']['#'];
                    $wikipages['importfrombackup'][$i]['pagename'] = $ewikipage['#']['PAGENAME']['0']['#'];
                    $wikipages['importfrombackup'][$i]['version'] = $ewikipage['#']['VERSION']['0']['#'];
                    $wikipages['importfrombackup'][$i]['content'] = restore_decode_absolute_links(addslashes(wiki_treat_content($ewikipage['#']['CONTENT']['0']['#'])));
                    $wikipages['importfrombackup'][$i]['version'] = $ewikipage['#']['VERSION']['0']['#'];
                    $pagerefs = restore_decode_absolute_links(addslashes($ewikipage['#']['REFS']['0']['#']));
                    $pagerefs = str_replace("\$@LINEFEED@\$", "|", $pagerefs);
                    $pagerefs = str_replace("||", "", $pagerefs);
                    $wikipages['importfrombackup'][$i]['refs'] = wiki_treat_internal_ref($pagerefs);
                    $wikipages['importfrombackup'][$i]['lastmodified'] = $ewikipage['#']['LASTMODIFIED']['0']['#'];
                    $wikipages['importfrombackup'][$i]['oldentryid'] = $data["ENTRIES"]["0"]["#"]["ENTRY"]["0"]["#"]["ID"]["0"]["#"];
                    $wikipages['importfrombackup'][$i]['oldid'] = $data["ID"]["0"]["#"];
                    switch ($htmlmode) {
                        case '0':
                            $editor = 'ewiki';
                            break;
                        case '1':
                            $editor = 'ewiki';
                            break;
                        case '2':
                            $editor = 'htmleditor';
                            break;
                        default:
                            break;
                    }
                    $wikipages['importfrombackup'][$i]['editor'] = $editor;
                    $wikipages['importfrombackup'][$i]['groupid'] = $groupid;
                    $infouser = wiki_get_username($ewikipage['#']['AUTHOR']['0']['#']);
                    $wikipages['importfrombackup'][$i]['author'] = $infouser->username;
                    $wikipages['importfrombackup'][$i]['userid'] = $infouser->id;
                    $i++;
                }
            }
        }
    } else {
        error("Not exists wiki pages to import in the backup file.");
    }
    return $wikipages;
}
Example #9
0
function backup_todb($data)
{
    return restore_decode_absolute_links(addslashes($data));
}
Example #10
0
function restore_create_users($restore, $xml_file)
{
    global $CFG, $db;
    $status = true;
    //Check it exists
    if (!file_exists($xml_file)) {
        $status = false;
    }
    //Get info from xml
    if ($status) {
        //info will contain the old_id of every user
        //in backup_ids->info will be the real info (serialized)
        $info = restore_read_xml_users($restore, $xml_file);
    }
    //Now, get evey user_id from $info and user data from $backup_ids
    //and create the necessary records (users, user_students, user_teachers
    //user_course_creators and user_admins
    if (!empty($info->users)) {
        // Grab mnethosts keyed by wwwroot, to map to id
        $mnethosts = get_records('mnet_host', '', '', 'wwwroot', 'wwwroot, id');
        $languages = get_list_of_languages();
        /// Iterate over all users loaded from xml
        $counter = 0;
        foreach ($info->users as $userid) {
            $rec = backup_getid($restore->backup_unique_code, "user", $userid);
            $user = $rec->info;
            foreach (array_keys(get_object_vars($user)) as $field) {
                if (!is_array($user->{$field})) {
                    $user->{$field} = backup_todb($user->{$field});
                    if (is_null($user->{$field})) {
                        $user->{$field} = '';
                    }
                }
            }
            //Now, recode some languages (Moodle 1.5)
            if ($user->lang == 'ma_nt') {
                $user->lang = 'mi_nt';
            }
            //Country list updates - MDL-13060
            //Any user whose country code has been deleted or modified needs to be assigned a valid one.
            $country_update_map = array('ZR' => 'CD', 'TP' => 'TL', 'FX' => 'FR', 'KO' => 'RS', 'CS' => 'RS', 'WA' => 'GB');
            if (array_key_exists($user->country, $country_update_map)) {
                $user->country = $country_update_map[$user->country];
            }
            //If language does not exist here - use site default
            if (!array_key_exists($user->lang, $languages)) {
                $user->lang = $CFG->lang;
            }
            //Check if it's admin and coursecreator
            $is_admin = !empty($user->roles['admin']);
            $is_coursecreator = !empty($user->roles['coursecreator']);
            //Check if it's teacher and student
            $is_teacher = !empty($user->roles['teacher']);
            $is_student = !empty($user->roles['student']);
            //Check if it's needed
            $is_needed = !empty($user->roles['needed']);
            //Calculate if it is a course user
            //Has role teacher or student or needed
            $is_course_user = ($is_teacher or $is_student or $is_needed);
            //Calculate mnethostid
            if (empty($user->mnethosturl) || $user->mnethosturl === $CFG->wwwroot) {
                $user->mnethostid = $CFG->mnet_localhost_id;
            } else {
                // fast url-to-id lookups
                if (isset($mnethosts[$user->mnethosturl])) {
                    $user->mnethostid = $mnethosts[$user->mnethosturl]->id;
                } else {
                    // should not happen, as we check in restore_chech.php
                    // but handle the error if it does
                    error("This backup file contains external Moodle Network Hosts that are not configured locally.");
                }
            }
            unset($user->mnethosturl);
            //To store new ids created
            $newid = null;
            //check if it exists (by username) and get its id
            $user_exists = true;
            $user_data = get_record("user", "username", addslashes($user->username), 'mnethostid', $user->mnethostid);
            if (!$user_data) {
                $user_exists = false;
            } else {
                $newid = $user_data->id;
            }
            //Flags to see if we have to create the user, roles and preferences
            $create_user = true;
            $create_roles = true;
            $create_preferences = true;
            //If we are restoring course users and it isn't a course user
            if ($restore->users == 1 and !$is_course_user) {
                //If only restoring course_users and user isn't a course_user, inform to $backup_ids
                $status = backup_putid($restore->backup_unique_code, "user", $userid, null, 'notincourse');
                $create_user = false;
                $create_roles = false;
                $create_preferences = false;
            }
            if ($user_exists and $create_user) {
                //If user exists mark its newid in backup_ids (the same than old)
                $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, 'exists');
                $create_user = false;
            }
            //Here, if create_user, do it
            if ($create_user) {
                //Unset the id because it's going to be inserted with a new one
                unset($user->id);
                // relink the descriptions
                $user->description = restore_decode_absolute_links($user->description);
                /// Disable pictures based on global setting of existing empty value (old backups can contain wrong empties)
                if (!empty($CFG->disableuserimages) || empty($user->picture)) {
                    $user->picture = 0;
                }
                //We need to analyse the AUTH field to recode it:
                //   - if the field isn't set, we are in a pre 1.4 backup and we'll
                //     use manual
                if (empty($user->auth)) {
                    if ($CFG->registerauth == 'email') {
                        $user->auth = 'email';
                    } else {
                        $user->auth = 'manual';
                    }
                }
                //We need to process the POLICYAGREED field to recalculate it:
                //    - if the destination site is different (by wwwroot) reset it.
                //    - if the destination site is the same (by wwwroot), leave it unmodified
                if ($restore->original_wwwroot != $CFG->wwwroot) {
                    $user->policyagreed = 0;
                } else {
                    //Nothing to do, we are in the same server
                }
                //Check if the theme exists in destination server
                $themes = get_list_of_themes();
                if (!in_array($user->theme, $themes)) {
                    $user->theme = '';
                }
                //We are going to create the user
                //The structure is exactly as we need
                $newid = insert_record("user", addslashes_recursive($user));
                //Put the new id
                $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, "new");
            }
            //Here, if create_roles, do it as necessary
            if ($create_roles) {
                //Get the newid and current info from backup_ids
                $data = backup_getid($restore->backup_unique_code, "user", $userid);
                $newid = $data->new_id;
                $currinfo = $data->info . ",";
                //Now, depending of the role, create records in user_studentes and user_teacher
                //and/or mark it in backup_ids
                if ($is_admin) {
                    //If the record (user_admins) doesn't exists
                    //Only put status in backup_ids
                    $currinfo = $currinfo . "admin,";
                    $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, $currinfo);
                }
                if ($is_coursecreator) {
                    //If the record (user_coursecreators) doesn't exists
                    //Only put status in backup_ids
                    $currinfo = $currinfo . "coursecreator,";
                    $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, $currinfo);
                }
                if ($is_needed) {
                    //Only put status in backup_ids
                    $currinfo = $currinfo . "needed,";
                    $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, $currinfo);
                }
                if ($is_teacher) {
                    //If the record (teacher) doesn't exists
                    //Put status in backup_ids
                    $currinfo = $currinfo . "teacher,";
                    $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, $currinfo);
                    //Set course and user
                    $user->roles['teacher']->course = $restore->course_id;
                    $user->roles['teacher']->userid = $newid;
                    //Need to analyse the enrol field
                    //    - if it isn't set, set it to $CFG->enrol
                    //    - if we are in a different server (by wwwroot), set it to $CFG->enrol
                    //    - if we are in the same server (by wwwroot), maintain it unmodified.
                    if (empty($user->roles['teacher']->enrol)) {
                        $user->roles['teacher']->enrol = $CFG->enrol;
                    } else {
                        if ($restore->original_wwwroot != $CFG->wwwroot) {
                            $user->roles['teacher']->enrol = $CFG->enrol;
                        } else {
                            //Nothing to do. Leave it unmodified
                        }
                    }
                    $rolesmapping = $restore->rolesmapping;
                    $context = get_context_instance(CONTEXT_COURSE, $restore->course_id);
                    if ($user->roles['teacher']->editall) {
                        role_assign($rolesmapping['defaultteacheredit'], $newid, 0, $context->id, $user->roles['teacher']->timestart, $user->roles['teacher']->timeend, 0, $user->roles['teacher']->enrol);
                        // editting teacher
                    } else {
                        // non editting teacher
                        role_assign($rolesmapping['defaultteacher'], $newid, 0, $context->id, $user->roles['teacher']->timestart, $user->roles['teacher']->timeend, 0, $user->roles['teacher']->enrol);
                    }
                }
                if ($is_student) {
                    //Put status in backup_ids
                    $currinfo = $currinfo . "student,";
                    $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, $currinfo);
                    //Set course and user
                    $user->roles['student']->course = $restore->course_id;
                    $user->roles['student']->userid = $newid;
                    //Need to analyse the enrol field
                    //    - if it isn't set, set it to $CFG->enrol
                    //    - if we are in a different server (by wwwroot), set it to $CFG->enrol
                    //    - if we are in the same server (by wwwroot), maintain it unmodified.
                    if (empty($user->roles['student']->enrol)) {
                        $user->roles['student']->enrol = $CFG->enrol;
                    } else {
                        if ($restore->original_wwwroot != $CFG->wwwroot) {
                            $user->roles['student']->enrol = $CFG->enrol;
                        } else {
                            //Nothing to do. Leave it unmodified
                        }
                    }
                    $rolesmapping = $restore->rolesmapping;
                    $context = get_context_instance(CONTEXT_COURSE, $restore->course_id);
                    role_assign($rolesmapping['defaultstudent'], $newid, 0, $context->id, $user->roles['student']->timestart, $user->roles['student']->timeend, 0, $user->roles['student']->enrol);
                }
                if (!$is_course_user) {
                    //If the record (user) doesn't exists
                    if (!record_exists("user", "id", $newid)) {
                        //Put status in backup_ids
                        $currinfo = $currinfo . "user,";
                        $status = backup_putid($restore->backup_unique_code, "user", $userid, $newid, $currinfo);
                    }
                }
            }
            //Here, if create_preferences, do it as necessary
            if ($create_preferences) {
                //echo "Checking for preferences of user ".$user->username."<br />";         //Debug
                //Get user new id from backup_ids
                $data = backup_getid($restore->backup_unique_code, "user", $userid);
                $newid = $data->new_id;
                if (isset($user->user_preferences)) {
                    //echo "Preferences exist in backup file<br />";                         //Debug
                    foreach ($user->user_preferences as $user_preference) {
                        //echo $user_preference->name." = ".$user_preference->value."<br />";    //Debug
                        //We check if that user_preference exists in DB
                        if (!record_exists("user_preferences", "userid", $newid, "name", $user_preference->name)) {
                            //echo "Creating it<br />";                                              //Debug
                            //Prepare the record and insert it
                            $user_preference->userid = $newid;
                            $status = insert_record("user_preferences", $user_preference);
                        }
                    }
                }
            }
            //Do some output
            $counter++;
            if ($counter % 10 == 0) {
                if (!defined('RESTORE_SILENTLY')) {
                    echo ".";
                    if ($counter % 200 == 0) {
                        echo "<br />";
                    }
                }
                backup_flush(300);
            }
        }
        /// End of loop over all the users loaded from xml
    }
    return $status;
}