add getCache and getScanner to storage api in order to allow storage backends to overwride caching behaviour

remotes/origin/stable5
Robin Appelman 13 years ago
parent 6f1fbf97f7
commit 3ff0772a05
  1. 50
      lib/files/storage/common.php
  2. 70
      lib/files/storage/storage.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);
}
}

@ -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();
}

Loading…
Cancel
Save