MDL-23885 fixed file api encapsulation and lowering number of direcories in zip files
authorPetr Skoda <skodak@moodle.org>
Thu, 26 Aug 2010 07:43:06 +0000 (07:43 +0000)
committerPetr Skoda <skodak@moodle.org>
Thu, 26 Aug 2010 07:43:06 +0000 (07:43 +0000)
backup/util/dbops/restore_dbops.class.php
backup/util/helper/backup_file_manager.class.php

index 483c692..c068b8f 100644 (file)
@@ -298,7 +298,7 @@ abstract class restore_dbops {
             }
             // arrived here, file found
             // Find file in backup pool
             }
             // arrived here, file found
             // Find file in backup pool
-            $backuppath = $basepath . backup_file_manager::get_content_file_location($file->contenthash);
+            $backuppath = $basepath . backup_file_manager::get_backup_content_file_location($file->contenthash);
             if (!file_exists($backuppath)) {
                 throw new restore_dbops_exception('file_not_found_in_pool', $file);
             }
             if (!file_exists($backuppath)) {
                 throw new restore_dbops_exception('file_not_found_in_pool', $file);
             }
@@ -920,7 +920,7 @@ abstract class restore_dbops {
         $course->timemodified = $course->timecreated;
         $course->visible = $category->visible;
 
         $course->timemodified = $course->timecreated;
         $course->visible = $category->visible;
 
-        return $DB->insert_record('course', $course);   
+        return $DB->insert_record('course', $course);
     }
 
     /**
     }
 
     /**
index 14ef03e..8cc292a 100644 (file)
  * those functions without needeing to know storage internals at all.
  * That day, we'll move related functions here to proper file api ones.
  *
  * those functions without needeing to know storage internals at all.
  * That day, we'll move related functions here to proper file api ones.
  *
- * TODO: Unse File API facilities when available instead of har-coded
- * storage access here.
- *
  * TODO: Finish phpdocs
  */
 class backup_file_manager {
 
  * TODO: Finish phpdocs
  */
 class backup_file_manager {
 
-    /**
-     * Returns the full path to the storage base dir
-     */
-    public static function get_moodle_storage_base_dir() {
-        global $CFG;
-
-        if (isset($CFG->filedir)) {
-            return $CFG->filedir;
-        } else {
-            return $CFG->dataroot.'/filedir';
-        }
-    }
-
     /**
      * Returns the full path to backup storage base dir
      */
     /**
      * Returns the full path to backup storage base dir
      */
@@ -66,10 +50,9 @@ class backup_file_manager {
      * Given one file content hash, returns the path (relative to filedir)
      * to the file.
      */
      * Given one file content hash, returns the path (relative to filedir)
      * to the file.
      */
-    public static function get_content_file_location($contenthash) {
+    public static function get_backup_content_file_location($contenthash) {
         $l1 = $contenthash[0].$contenthash[1];
         $l1 = $contenthash[0].$contenthash[1];
-        $l2 = $contenthash[2].$contenthash[3];
-        return "$l1/$l2/$contenthash";
+        return "$l1/$contenthash";
     }
 
     /**
     }
 
     /**
@@ -88,16 +71,12 @@ class backup_file_manager {
             return;
         }
 
             return;
         }
 
+        $fs = get_file_storage();
+        $file = new stored_file($fs, $filerecorid);
+
         // Calculate source and target paths (use same subdirs strategy for both)
         // Calculate source and target paths (use same subdirs strategy for both)
-        $sourcefilepath = self::get_moodle_storage_base_dir() . '/' .
-                          self::get_content_file_location($filerecorid->contenthash);
         $targetfilepath = self::get_backup_storage_base_dir($backupid) . '/' .
         $targetfilepath = self::get_backup_storage_base_dir($backupid) . '/' .
-                          self::get_content_file_location($filerecorid->contenthash);
-
-        // Check source exists and is readable
-        if (!file_exists($sourcefilepath) || !is_readable($sourcefilepath)) {
-            throw new backup_helper_exception('cannot_read_file_from_filepool', $sourcefilepath);
-        }
+                          self::get_backup_content_file_location($filerecorid->contenthash);
 
         // Create target dir if necessary
         if (!file_exists(dirname($targetfilepath))) {
 
         // Create target dir if necessary
         if (!file_exists(dirname($targetfilepath))) {
@@ -108,9 +87,7 @@ class backup_file_manager {
 
         // And copy the file (if doesn't exist already)
         if (!file_exists($targetfilepath)) {
 
         // And copy the file (if doesn't exist already)
         if (!file_exists($targetfilepath)) {
-            if (!copy($sourcefilepath, $targetfilepath)) {
-                throw new backup_helper_exception('cannot_copy_file', $sourcefilepath, $targetfilepath);
-            }
+            $file->copy_content_to($targetfilepath);
         }
     }
 }
         }
     }
 }