diff options
Diffstat (limited to 'engine/classes/ElggFilestore.php')
| -rw-r--r-- | engine/classes/ElggFilestore.php | 139 | 
1 files changed, 139 insertions, 0 deletions
| diff --git a/engine/classes/ElggFilestore.php b/engine/classes/ElggFilestore.php new file mode 100644 index 000000000..16430feac --- /dev/null +++ b/engine/classes/ElggFilestore.php @@ -0,0 +1,139 @@ +<?php +/** + * This class defines the interface for all elgg data repositories. + * + * @package    Elgg.Core + * @subpackage DataStorage + * @class   ElggFilestore + */ +abstract class ElggFilestore { +	/** +	 * Attempt to open the file $file for storage or writing. +	 * +	 * @param ElggFile $file A file +	 * @param string   $mode "read", "write", "append" +	 * +	 * @return mixed A handle to the opened file or false on error. +	 */ +	abstract public function open(ElggFile $file, $mode); + +	/** +	 * Write data to a given file handle. +	 * +	 * @param mixed  $f    The file handle - exactly what this is depends on the file system +	 * @param string $data The binary string of data to write +	 * +	 * @return int Number of bytes written. +	 */ +	abstract public function write($f, $data); + +	/** +	 * Read data from a filestore. +	 * +	 * @param mixed $f      The file handle +	 * @param int   $length Length in bytes to read. +	 * @param int   $offset The optional offset. +	 * +	 * @return mixed String of data or false on error. +	 */ +	abstract public function read($f, $length, $offset = 0); + +	/** +	 * Seek a given position within a file handle. +	 * +	 * @param mixed $f        The file handle. +	 * @param int   $position The position. +	 * +	 * @return void +	 */ +	abstract public function seek($f, $position); + +	/** +	 * Return a whether the end of a file has been reached. +	 * +	 * @param mixed $f The file handle. +	 * +	 * @return boolean +	 */ +	abstract public function eof($f); + +	/** +	 * Return the current position in an open file. +	 * +	 * @param mixed $f The file handle. +	 * +	 * @return int +	 */ +	abstract public function tell($f); + +	/** +	 * Close a given file handle. +	 * +	 * @param mixed $f The file handle +	 * +	 * @return bool +	 */ +	abstract public function close($f); + +	/** +	 * Delete the file associated with a given file handle. +	 * +	 * @param ElggFile $file The file +	 * +	 * @return bool +	 */ +	abstract public function delete(ElggFile $file); + +	/** +	 * Return the size in bytes for a given file. +	 * +	 * @param ElggFile $file The file +	 * +	 * @return int +	 */ +	abstract public function getFileSize(ElggFile $file); + +	/** +	 * Return the filename of a given file as stored on the filestore. +	 * +	 * @param ElggFile $file The file +	 * +	 * @return string +	 */ +	abstract public function getFilenameOnFilestore(ElggFile $file); + +	/** +	 * Get the filestore's creation parameters as an associative array. +	 * Used for serialisation and for storing the creation details along side a file object. +	 * +	 * @return array +	 */ +	abstract public function getParameters(); + +	/** +	 * Set the parameters from the associative array produced by $this->getParameters(). +	 * +	 * @param array $parameters A list of parameters +	 * +	 * @return bool +	 */ +	abstract public function setParameters(array $parameters); + +	/** +	 * Get the contents of the whole file. +	 * +	 * @param mixed $file The file handle. +	 * +	 * @return mixed The file contents. +	 */ +	abstract public function grabFile(ElggFile $file); + +	/** +	 * Return whether a file physically exists or not. +	 * +	 * @param ElggFile $file The file +	 * +	 * @return bool +	 */ +	abstract public function exists(ElggFile $file); +} | 
