| [ Index ] |
PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008] |
[Summary view] [Print] [Text view]
1 <?PHP //$Id: backuplib.php,v 1.7.2.1 2008/04/28 23:08:57 stronk7 Exp $ 2 //This php script contains all the stuff to backup/restore 3 //wiki mods 4 5 //This is the "graphical" structure of the wiki mod: 6 // 7 // wiki 8 // (CL,pk->id) 9 // 10 // wiki_entries 11 // (pk->id, fk->wikiid) 12 // 13 // wiki_pages 14 // (pk->pagename,version,wiki, fk->wiki) 15 // 16 // Meaning: pk->primary key field of the table 17 // fk->foreign key to link with parent 18 // nt->nested field (recursive data) 19 // CL->course level info 20 // UL->user level info 21 // files->table may have files) 22 // 23 //----------------------------------------------------------- 24 25 //This function executes all the backup procedure about this mod 26 function wiki_backup_mods($bf,$preferences) { 27 global $CFG; 28 29 $status = true; 30 31 ////Iterate over wiki table 32 if ($wikis = get_records ("wiki","course", $preferences->backup_course,"id")) { 33 foreach ($wikis as $wiki) { 34 if (backup_mod_selected($preferences,'wiki',$wiki->id)) { 35 wiki_backup_one_mod($bf,$preferences,$wiki); 36 } 37 } 38 } 39 40 return $status; 41 } 42 43 function wiki_backup_one_mod($bf,$preferences,$wiki) { 44 45 $status = true; 46 47 if (is_numeric($wiki)) { 48 $wiki = get_record('wiki','id',$wiki); 49 } 50 51 //Start mod 52 fwrite ($bf,start_tag("MOD",3,true)); 53 //Print assignment data 54 fwrite ($bf,full_tag("ID",4,false,$wiki->id)); 55 fwrite ($bf,full_tag("MODTYPE",4,false,"wiki")); 56 fwrite ($bf,full_tag("NAME",4,false,$wiki->name)); 57 fwrite ($bf,full_tag("SUMMARY",4,false,$wiki->summary)); 58 fwrite ($bf,full_tag("PAGENAME",4,false,$wiki->pagename)); 59 fwrite ($bf,full_tag("WTYPE",4,false,$wiki->wtype)); 60 fwrite ($bf,full_tag("EWIKIPRINTTITLE",4,false,$wiki->ewikiprinttitle)); 61 fwrite ($bf,full_tag("HTMLMODE",4,false,$wiki->htmlmode)); 62 fwrite ($bf,full_tag("EWIKIACCEPTBINARY",4,false,$wiki->ewikiacceptbinary)); 63 fwrite ($bf,full_tag("DISABLECAMELCASE",4,false,$wiki->disablecamelcase)); 64 fwrite ($bf,full_tag("SETPAGEFLAGS",4,false,$wiki->setpageflags)); 65 fwrite ($bf,full_tag("STRIPPAGES",4,false,$wiki->strippages)); 66 fwrite ($bf,full_tag("REMOVEPAGES",4,false,$wiki->removepages)); 67 fwrite ($bf,full_tag("REVERTCHANGES",4,false,$wiki->revertchanges)); 68 fwrite ($bf,full_tag("INITIALCONTENT",4,false,$wiki->initialcontent)); 69 fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$wiki->timemodified)); 70 71 //backup entries and pages 72 if (backup_userdata_selected($preferences,'wiki',$wiki->id)) { 73 $status = backup_wiki_entries($bf,$preferences,$wiki->id, $preferences->mods["wiki"]->userinfo); 74 $status = backup_wiki_files_instance($bf,$preferences,$wiki->id); 75 } 76 77 //End mod 78 fwrite ($bf,end_tag("MOD",3,true)); 79 80 return $status; 81 } 82 83 function wiki_check_backup_mods_instances($instance,$backup_unique_code) { 84 $info[$instance->id.'0'][0] = $instance->name; 85 $info[$instance->id.'0'][1] = ''; 86 // wiki_check_backup_mods ignores userdata, so we do too. 87 return $info; 88 } 89 90 ////Return an array of info (name,value) 91 function wiki_check_backup_mods($course,$user_data=false,$backup_unique_code,$instances=null) { 92 if (!empty($instances) && is_array($instances) && count($instances)) { 93 $info = array(); 94 foreach ($instances as $id => $instance) { 95 $info += wiki_check_backup_mods_instances($instance,$backup_unique_code); 96 } 97 return $info; 98 } 99 //First the course data 100 $info[0][0] = get_string("modulenameplural","wiki"); 101 $info[0][1] = count_records("wiki", "course", "$course"); 102 return $info; 103 } 104 105 //Backup wiki_entries contents (executed from wiki_backup_mods) 106 function backup_wiki_entries ($bf,$preferences,$wiki, $userinfo) { 107 108 global $CFG; 109 110 $status = true; 111 112 $wiki_entries = get_records("wiki_entries","wikiid",$wiki,"id"); 113 //If there are entries 114 if ($wiki_entries) { 115 //Write start tag 116 $status =fwrite ($bf,start_tag("ENTRIES",4,true)); 117 //Iterate over each entry 118 foreach ($wiki_entries as $wik_ent) { 119 //Entry start 120 $status =fwrite ($bf,start_tag("ENTRY",5,true)); 121 122 fwrite ($bf,full_tag("ID",6,false,$wik_ent->id)); 123 fwrite ($bf,full_tag("GROUPID",6,false,$wik_ent->groupid)); 124 fwrite ($bf,full_tag("USERID",6,false,$wik_ent->userid)); 125 fwrite ($bf,full_tag("PAGENAME",6,false,$wik_ent->pagename)); 126 fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$wik_ent->timemodified)); 127 128 //Now save entry pages 129 $status = backup_wiki_pages($bf,$preferences,$wik_ent->id); 130 131 //Entry end 132 $status =fwrite ($bf,end_tag("ENTRY",5,true)); 133 } 134 //Write end tag 135 $status =fwrite ($bf,end_tag("ENTRIES",4,true)); 136 } 137 return $status; 138 } 139 140 //Write wiki_pages contents 141 function backup_wiki_pages ($bf,$preferences,$entryid) { 142 143 global $CFG; 144 145 $status = true; 146 147 $pages = get_records("wiki_pages","wiki",$entryid); 148 if ($pages) { 149 //Start tag 150 $status =fwrite ($bf,start_tag("PAGES",6,true)); 151 //Iterate over each page 152 foreach ($pages as $page) { 153 $status =fwrite ($bf,start_tag("PAGE",7,true)); 154 155 fwrite ($bf,full_tag("ID",8,false,$page->id)); 156 fwrite ($bf,full_tag("PAGENAME",8,false,$page->pagename)); 157 fwrite ($bf,full_tag("VERSION",8,false,$page->version)); 158 fwrite ($bf,full_tag("FLAGS",8,false,$page->flags)); 159 fwrite ($bf,full_tag("CONTENT",8,false,$page->content)); 160 fwrite ($bf,full_tag("AUTHOR",8,false,$page->author)); 161 fwrite ($bf,full_tag("USERID",8,false,$page->userid)); 162 fwrite ($bf,full_tag("CREATED",8,false,$page->created)); 163 fwrite ($bf,full_tag("LASTMODIFIED",8,false,$page->lastmodified)); 164 fwrite ($bf,full_tag("REFS",8,false,str_replace("\n","$@LINEFEED@$",$page->refs))); 165 fwrite ($bf,full_tag("META",8,false,$page->meta)); 166 fwrite ($bf,full_tag("HITS",8,false,$page->hits)); 167 168 $status =fwrite ($bf,end_tag("PAGE",7,true)); 169 } 170 $status =fwrite ($bf,end_tag("PAGES",6,true)); 171 } 172 return $status; 173 } 174 175 function backup_wiki_files_instance($bf,$preferences,$instanceid) { 176 177 global $CFG; 178 179 $status = true; 180 181 //First we check to moddata exists and create it as necessary 182 //in temp/backup/$backup_code dir 183 $status = check_and_create_moddata_dir($preferences->backup_unique_code); 184 $status = check_dir_exists($CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/wiki/",true); 185 //Now copy the forum dir 186 if ($status) { 187 //Only if it exists !! Thanks to Daniel Miksik. 188 if (is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/wiki/".$instanceid)) { 189 $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/wiki/".$instanceid, 190 $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/wiki/".$instanceid); 191 } 192 } 193 194 return $status; 195 } 196 197 //Backup wiki binary files 198 function backup_wiki_files($bf,$preferences) { 199 200 global $CFG; 201 202 $status = true; 203 204 //First we check to moddata exists and create it as necessary 205 //in temp/backup/$backup_code dir 206 $status = check_and_create_moddata_dir($preferences->backup_unique_code); 207 //Now copy the forum dir 208 if ($status) { 209 //Only if it exists !! Thanks to Daniel Miksik. 210 if (is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/wiki")) { 211 $handle = opendir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/wiki"); 212 while (false!==($item = readdir($handle))) { 213 if ($item != '.' && $item != '..' && is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/wiki/".$item) 214 && array_key_exists($item,$preferences->mods['wiki']->instances) 215 && !empty($preferences->mods['wiki']->instances[$item]->backup)) { 216 $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/wiki/".$item, 217 $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/wiki/",$item); 218 } 219 } 220 } 221 } 222 223 return $status; 224 225 } 226 227 //Return a content encoded to support interactivities linking. Every module 228 //should have its own. They are called automatically from the backup procedure. 229 function wiki_encode_content_links ($content,$preferences) { 230 231 global $CFG; 232 233 $base = preg_quote($CFG->wwwroot,"/"); 234 235 //Link to the list of wikis 236 $buscar="/(".$base."\/mod\/wiki\/index.php\?id\=)([0-9]+)/"; 237 $result= preg_replace($buscar,'$@WIKIINDEX*$2@$',$content); 238 239 //Link to wiki view by moduleid 240 $buscar="/(".$base."\/mod\/wiki\/view.php\?id\=)([0-9]+)/"; 241 $result= preg_replace($buscar,'$@WIKIVIEWBYID*$2@$',$result); 242 243 return $result; 244 } 245 246 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Wed Jan 14 11:33:29 2009 | Cross-referenced by PHPXref 0.7 |