summaryrefslogtreecommitdiffstats
path: root/lib/files
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-10-21 00:31:32 +0200
committerRobin Appelman <icewind@owncloud.com>2012-10-21 00:31:32 +0200
commit3ff0772a05c70592360c7b11b280cc4cf45a385e (patch)
treefb7b61e671dc70583a771c642c038a0952ecd9f4 /lib/files
parent6f1fbf97f7678f7a9a8b2e92d1cdd24fc5710d17 (diff)
downloadnextcloud-server-3ff0772a05c70592360c7b11b280cc4cf45a385e.tar.gz
nextcloud-server-3ff0772a05c70592360c7b11b280cc4cf45a385e.zip
add getCache and getScanner to storage api in order to allow storage backends to overwride caching behaviour
Diffstat (limited to 'lib/files')
-rw-r--r--lib/files/storage/common.php50
-rw-r--r--lib/files/storage/storage.php70
2 files changed, 48 insertions, 72 deletions
diff --git a/lib/files/storage/common.php b/lib/files/storage/common.php
index 17405845554..de02c0d5d81 100644
--- a/lib/files/storage/common.php
+++ b/lib/files/storage/common.php
@@ -20,7 +20,7 @@ namespace OC\Files\Storage;
* in classes which extend it, e.g. $this->stat() .
*/
-abstract class Common extends \OC\Files\Storage\Storage {
+abstract class Common implements \OC\Files\Storage\Storage {
public function __construct($parameters) {}
// abstract public function getId();
@@ -123,64 +123,30 @@ abstract class Common extends \OC\Files\Storage\Storage {
* deleted together with its contents. To avoid this set $empty to true
*/
public function deleteAll( $directory, $empty = false ) {
-
- // strip leading slash
- if( substr( $directory, 0, 1 ) == "/" ) {
-
- $directory = substr( $directory, 1 );
-
- }
-
- // strip trailing slash
- if( substr( $directory, -1) == "/" ) {
-
- $directory = substr( $directory, 0, -1 );
-
- }
+ $directory = trim($directory,'/');
if ( !$this->file_exists( \OCP\USER::getUser() . '/' . $directory ) || !$this->is_dir( \OCP\USER::getUser() . '/' . $directory ) ) {
-
return false;
-
} elseif( !$this->is_readable( \OCP\USER::getUser() . '/' . $directory ) ) {
-
return false;
-
} else {
-
$directoryHandle = $this->opendir( \OCP\USER::getUser() . '/' . $directory );
-
while ( $contents = readdir( $directoryHandle ) ) {
-
if ( $contents != '.' && $contents != '..') {
-
$path = $directory . "/" . $contents;
-
if ( $this->is_dir( $path ) ) {
-
deleteAll( $path );
-
} else {
-
$this->unlink( \OCP\USER::getUser() .'/' . $path ); // TODO: make unlink use same system path as is_dir
-
}
}
-
}
-
//$this->closedir( $directoryHandle ); // TODO: implement closedir in OC_FSV
-
if ( $empty == false ) {
-
if ( !$this->rmdir( $directory ) ) {
-
- return false;
-
+ return false;
}
-
}
-
return true;
}
@@ -209,7 +175,7 @@ abstract class Common extends \OC\Files\Storage\Storage {
return $mime;
}
public function hash($type,$path,$raw = false) {
- $tmpFile=$this->getLocalFile();
+ $tmpFile=$this->getLocalFile($path);
$hash=hash($type,$tmpFile,$raw);
unlink($tmpFile);
return $hash;
@@ -283,4 +249,12 @@ abstract class Common extends \OC\Files\Storage\Storage {
public function hasUpdated($path,$time) {
return $this->filemtime($path)>$time;
}
+
+ public function getCache(){
+ return new \OC\Files\Cache\Cache($this);
+ }
+
+ public function getScanner(){
+ return new \OC\Files\Cache\Scanner($this);
+ }
}
diff --git a/lib/files/storage/storage.php b/lib/files/storage/storage.php
index 941bc3b0779..b1ec0bdb500 100644
--- a/lib/files/storage/storage.php
+++ b/lib/files/storage/storage.php
@@ -9,40 +9,40 @@
namespace OC\Files\Storage;
/**
- * Provde a common interface to all different storage options
+ * Provide a common interface to all different storage options
*/
-abstract class Storage{
- abstract public function __construct($parameters);
- abstract public function getId();
- abstract public function mkdir($path);
- abstract public function rmdir($path);
- abstract public function opendir($path);
- abstract public function is_dir($path);
- abstract public function is_file($path);
- abstract public function stat($path);
- abstract public function filetype($path);
- abstract public function filesize($path);
- abstract public function isCreatable($path);
- abstract public function isReadable($path);
- abstract public function isUpdatable($path);
- abstract public function isDeletable($path);
- abstract public function isSharable($path);
- abstract public function getPermissions($path);
- abstract public function file_exists($path);
- abstract public function filemtime($path);
- abstract public function file_get_contents($path);
- abstract public function file_put_contents($path,$data);
- abstract public function unlink($path);
- abstract public function rename($path1,$path2);
- abstract public function copy($path1,$path2);
- abstract public function fopen($path,$mode);
- abstract public function getMimeType($path);
- abstract public function hash($type,$path,$raw = false);
- abstract public function free_space($path);
- abstract public function search($query);
- abstract public function touch($path, $mtime=null);
- abstract public function getLocalFile($path);// get a path to a local version of the file, whether the original file is local or remote
- abstract public function getLocalFolder($path);// get a path to a local version of the folder, whether the original file is local or remote
+interface Storage{
+ public function __construct($parameters);
+ public function getId();
+ public function mkdir($path);
+ public function rmdir($path);
+ public function opendir($path);
+ public function is_dir($path);
+ public function is_file($path);
+ public function stat($path);
+ public function filetype($path);
+ public function filesize($path);
+ public function isCreatable($path);
+ public function isReadable($path);
+ public function isUpdatable($path);
+ public function isDeletable($path);
+ public function isSharable($path);
+ public function getPermissions($path);
+ public function file_exists($path);
+ public function filemtime($path);
+ public function file_get_contents($path);
+ public function file_put_contents($path,$data);
+ public function unlink($path);
+ public function rename($path1,$path2);
+ public function copy($path1,$path2);
+ public function fopen($path,$mode);
+ public function getMimeType($path);
+ public function hash($type,$path,$raw = false);
+ public function free_space($path);
+ public function search($query);
+ public function touch($path, $mtime=null);
+ public function getLocalFile($path);// get a path to a local version of the file, whether the original file is local or remote
+ public function getLocalFolder($path);// get a path to a local version of the folder, whether the original file is local or remote
/**
* check if a file or folder has been updated since $time
* @param int $time
@@ -51,5 +51,7 @@ abstract class Storage{
* hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
* returning true for other changes in the folder is optional
*/
- abstract public function hasUpdated($path,$time);
+ public function hasUpdated($path,$time);
+ public function getCache();
+ public function getScanner();
}