aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/filestore.php35
1 files changed, 33 insertions, 2 deletions
diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php
index 1fd292b83..293122586 100644
--- a/engine/lib/filestore.php
+++ b/engine/lib/filestore.php
@@ -72,6 +72,14 @@
* @return int
*/
abstract public function tell($f);
+
+ /**
+ * Get the contents of the whole file.
+ *
+ * @param mixed $f The file handle.
+ * @return mixed The file contents.
+ */
+ abstract public function grabFile($f);
/**
* Close a given file handle.
@@ -191,8 +199,13 @@
}
public function delete(ElggFile $file)
- {
- return unlink($this->getFilenameOnFilestore($file));
+ {
+ $filename = $this->getFilenameOnFilestore($file);
+ if (file_exists($filename)) {
+ return unlink($filename);
+ } else {
+ return true;
+ }
}
public function seek($f, $position)
@@ -225,6 +238,12 @@
return $this->dir_root . $this->make_file_matrix($owner->username) . $file->getFilename();
}
+
+ public function grabFile(ElggFile $file) {
+
+ return file_get_contents($file->getFilenameOnFilestore());
+
+ }
/**
* Make the directory root.
@@ -418,6 +437,18 @@
return $fs->read($this->handle, $length, $offset);
}
+
+ /**
+ * Gets the full contents of this file.
+ *
+ * @return mixed The file contents.
+ */
+ public function grabFile() {
+
+ $fs = $this->getFilestore();
+ return $fs->grabFile($this);
+
+ }
/**
* Close the file and commit changes