[ Index ]

PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008]

title

Body

[close]

/mod/wiki/ -> backuplib.php (source)

   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  ?>


Generated: Wed Jan 14 11:33:29 2009 Cross-referenced by PHPXref 0.7