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_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);
    }
}
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;
}