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