]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-14589 /. files are not created anymore when browsing empty areas, yay!
authorskodak <skodak>
Sun, 7 Sep 2008 10:06:26 +0000 (10:06 +0000)
committerskodak <skodak>
Sun, 7 Sep 2008 10:06:26 +0000 (10:06 +0000)
lib/file/file_browser.php
lib/file/file_info_coursefile.php
lib/file/file_info_stored.php
lib/file/virtual_root_file.php [new file with mode: 0644]

index d4281112faad5d259cec8b987f8717c045a97088..79f8fa1722f77d2a5255927c75cb85f5f8954194 100644 (file)
@@ -8,6 +8,7 @@ require_once("$CFG->libdir/file/file_info_user.php");
 require_once("$CFG->libdir/file/file_info_coursecat.php");
 require_once("$CFG->libdir/file/file_info_course.php");
 require_once("$CFG->libdir/file/file_info_coursefile.php");
+require_once("$CFG->libdir/file/virtual_root_file.php");
 
 /**
  * Main interface for browsing of file tree (local files, areas, virtual files, etc.).
@@ -57,7 +58,7 @@ class file_browser {
 
                     if (!$storedfile = $fs->get_file($context->id, $filearea, 0, $filepath, $filename)) {
                         if ($filepath === '/' and $filename === '.') {
-                            $storedfile = $fs->create_directory($context->id, $filearea, 0, $filepath, $USER->id);
+                            $storedfile = new virtual_root_file($context->id, $filearea, 0);
                         } else {
                             // not found
                             return null;
@@ -110,7 +111,7 @@ class file_browser {
                     $urlbase = $CFG->wwwroot.'/pluginfile.php';
                     if (!$storedfile = $fs->get_file($context->id, $filearea, 0, $filepath, $filename)) {
                         if ($filepath === '/' and $filename === '.') {
-                            $storedfile = $fs->create_directory($context->id, $filearea, 0, $filepath);
+                            $storedfile = new virtual_root_file($context->id, $filearea, 0);
                         } else {
                             // not found
                             return null;
@@ -152,7 +153,7 @@ class file_browser {
                     $urlbase = $CFG->wwwroot.'/pluginfile.php';
                     if (!$storedfile = $fs->get_file($context->id, $filearea, 0, $filepath, $filename)) {
                         if ($filepath === '/' and $filename === '.') {
-                            $storedfile = $fs->create_directory($context->id, $filearea, 0, $filepath);
+                            $storedfile = new virtual_root_file($context->id, $filearea, 0);
                         } else {
                             // not found
                             return null;
@@ -169,7 +170,7 @@ class file_browser {
                     $urlbase = $CFG->wwwroot.'/pluginfile.php';
                     if (!$storedfile = $fs->get_file($context->id, $filearea, 0, $filepath, $filename)) {
                         if ($filepath === '/' and $filename === '.') {
-                            $storedfile = $fs->create_directory($context->id, $filearea, 0, $filepath);
+                            $storedfile = new virtual_root_file($context->id, $filearea, 0);
                         } else {
                             // not found
                             return null;
@@ -188,7 +189,7 @@ class file_browser {
 
                     if (!$storedfile = $fs->get_file($context->id, $filearea, 0, $filepath, $filename)) {
                         if ($filepath === '/' and $filename === '.') {
-                            $storedfile = $fs->create_directory($context->id, $filearea, 0, $filepath);
+                            $storedfile = new virtual_root_file($context->id, $filearea, 0);
                         } else {
                             // not found
                             return null;
@@ -247,7 +248,7 @@ class file_browser {
                 $urlbase = $CFG->wwwroot.'/pluginfile.php';
                 if (!$storedfile = $fs->get_file($context->id, $filearea, 0, $filepath, $filename)) {
                     if ($filepath === '/' and $filename === '.') {
-                        $storedfile = $fs->create_directory($context->id, $filearea, 0, $filepath);
+                        $storedfile = new virtual_root_file($context->id, $filearea, 0);
                     } else {
                         // not found
                         return null;
index 9ebc3b48460037c2331e04d0e06c08429f8f6c25..17041b35f1617146f3b6a01ba2b3b42f3c1f3c67 100644 (file)
@@ -14,7 +14,7 @@ class file_info_coursefile extends file_info_stored {
             return null;
         }
 
-        if ($this->lf->get_filename() === '.') {
+        if ($this->lf->is_directory()) {
             return null;
         }
 
@@ -28,8 +28,8 @@ class file_info_coursefile extends file_info_stored {
     }
 
     public function get_children() {
-        if ($this->lf->get_filename() !== '.') {
-            return array(); //not a dir
+        if (!$this->lf->is_directory()) {
+            return array();
         }
         return $this->browser->build_coursefile_children($this->context, $this->lf->get_filepath());
     }
index dc92a38d2b8ebf68fb7ab07f0bbbe5de546ad0fa..981b84be7ae07e40682c75a4f699a5b36232d6af 100644 (file)
@@ -102,23 +102,19 @@ class file_info_stored extends file_info {
     }
 
     public function is_directory() {
-        if (!$this->lf) {
-            return true;
-        }
-
-        return ($this->lf->get_filename() === '.');
+        return $this->lf->is_directory();
     }
 
     public function get_children() {
-        if ($this->lf->get_filename() !== '.') {
-            return array(); //not a dir
+        if (!$this->lf->is_directory()) {
+            return array();
         }
         return $this->browser->build_stored_file_children($this->context, $this->lf->get_filearea(), $this->lf->get_itemid(), $this->lf->get_filepath(),
                                                          $this->urlbase, $this->areavisiblename, $this->itemidused, $this->readaccess, $this->writeaccess);
     }
 
     public function get_parent() {
-        if ($this->lf->get_filename() !== '.') {
+        if (!$this->lf->is_directory()) {
             return $this->browser->get_file_info($this->context, $this->lf->get_filearea(), $this->lf->get_itemid(), $this->lf->get_filepath(), '.');
         }
 
@@ -141,7 +137,7 @@ class file_info_stored extends file_info {
     }
 
     public function create_directory($newdirname, $userid=null) {
-        if (!$this->is_writable() or $this->lf->get_filename() !== '.') {
+        if (!$this->is_writable() or !$this->lf->is_directory()) {
             return null;
         }
 
@@ -162,7 +158,7 @@ class file_info_stored extends file_info {
 
 
     public function create_file_from_string($newfilename, $content, $userid=null) {
-        if (!$this->is_writable() or $this->lf->get_filename() !== '.') {
+        if (!$this->is_writable() or !$this->lf->is_directory()) {
             return null;
         }
 
@@ -194,7 +190,7 @@ class file_info_stored extends file_info {
     }
 
     public function create_file_from_pathname($newfilename, $pathname, $userid=null) {
-        if (!$this->is_writable() or $this->lf->get_filename() !== '.') {
+        if (!$this->is_writable() or !$this->lf->is_directory()) {
             return null;
         }
 
@@ -258,7 +254,7 @@ class file_info_stored extends file_info {
     }
 
     public function delete() {
-        if (!$this->lf or !$this->is_writable()) {
+        if (!$this->is_writable()) {
             return false;
         }
 
diff --git a/lib/file/virtual_root_file.php b/lib/file/virtual_root_file.php
new file mode 100644 (file)
index 0000000..9fc53b3
--- /dev/null
@@ -0,0 +1,173 @@
+<?php  //$Id$
+
+/**
+ * Root directory in empty file area
+ */
+class virtual_root_file {
+    protected $contextid;
+    protected $filearea;
+    protected $itemid;
+
+    /**
+     * Constructor
+     */
+    public function __construct($contextid, $filearea, $itemid) {
+        $this->contextid = $contextid;
+        $this->filearea  = $filearea;
+        $this->itemid    = $itemid;
+    }
+
+    /**
+     * Is this a directory?
+     * @return bool
+     */
+    public function is_directory() {
+        return true;
+    }
+
+    /**
+     * Delete file
+     * @return success
+     */
+    public function delete() {
+        return true;
+    }
+
+    /**
+    * adds this file path to a curl request (POST only)
+    *
+    * @param curl $curlrequest the curl request object
+    * @param string $key what key to use in the POST request
+    */
+    public function add_to_curl_request(&$curlrequest, $key) {
+        return;
+    }
+
+    /**
+     * Returns file handle - read only mode, no writing allowed into pool files!
+     * @return file handle
+     */
+    public function get_content_file_handle() {
+        return null;
+    }
+
+    /**
+     * Dumps file content to page
+     * @return file handle
+     */
+    public function readfile() {
+        return;
+    }
+
+    /**
+     * Returns file content as string
+     * @return string content
+     */
+    public function get_content() {
+        return '';
+    }
+
+    /**
+     * Copy content of file to give npathname
+     * @param string $pathnema rela path to new file
+     * @return bool success
+     */
+    public function copy_content_to($pathname) {
+        return false;
+    }
+
+    /**
+     * List contents of archive
+     * @param object $file_packer
+     * @return array of file infos
+     */
+    public function list_files(file_packer $packer) {
+        return null;
+    }
+
+    /**
+     * Extract file to given file path (real OS filesystem), existing files are overwrited
+     * @param object $file_packer
+     * @param string $pathname target directory
+     * @return mixed list of processed files; false if error
+     */
+    public function extract_to_pathname(file_packer $packer, $pathname) {
+        return false;
+    }
+
+    /**
+     * Extract file to given file path (real OS filesystem), existing files are overwrited
+     * @param object $file_packer
+     * @param int $contextid
+     * @param string $filearea
+     * @param int $itemid
+     * @param string $pathbase
+     * @param int $userid
+     * @return mixed list of processed files; false if error
+     */
+    public function extract_to_storage(file_packer $packer, $contextid, $filearea, $itemid, $pathbase, $userid=null) {
+        return false;
+    }
+
+    /**
+     * Add file/directory into archive
+     * @param object $filearch
+     * @param string $archivepath pathname in archive
+     * @return bool success
+     */
+    public function archive_file(file_archive $filearch, $archivepath) {
+        return false;
+    }
+
+    public function get_contextid() {
+        return $this->contextid;
+    }
+
+    public function get_filearea() {
+        return $this->filearea;
+    }
+
+    public function get_itemid() {
+        return $this->itemid;
+    }
+
+    public function get_filepath() {
+        return '/';
+    }
+
+    public function get_filename() {
+        return '.';
+    }
+
+    public function get_userid() {
+        return null;
+    }
+
+    public function get_filesize() {
+        return 0;
+    }
+
+    public function get_mimetype() {
+        return null;
+    }
+
+    public function get_timecreated() {
+        return 0;
+    }
+
+    public function get_timemodified() {
+        return 0;
+    }
+
+    public function get_status() {
+        return 0;
+    }
+
+    public function get_id() {
+        return 0;
+    }
+
+    public function get_contenthash() {
+        return sha1('');
+    }
+}