Add $storage->instanceOfStorage to handle instanceof for storage wrappers
This commit is contained in:
parent
c0f02be50a
commit
8c5521fdfc
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
namespace OC\Files\Storage;
|
||||
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\Cache\Watcher;
|
||||
|
||||
|
@ -21,7 +22,6 @@ use OC\Files\Cache\Watcher;
|
|||
* Some \OC\Files\Storage\Common methods call functions which are first defined
|
||||
* in classes which extend it, e.g. $this->stat() .
|
||||
*/
|
||||
|
||||
abstract class Common implements \OC\Files\Storage\Storage {
|
||||
protected $cache;
|
||||
protected $scanner;
|
||||
|
@ -46,7 +46,7 @@ abstract class Common implements \OC\Files\Storage\Storage {
|
|||
protected function remove($path) {
|
||||
if ($this->is_dir($path)) {
|
||||
return $this->rmdir($path);
|
||||
} else if($this->is_file($path)) {
|
||||
} else if ($this->is_file($path)) {
|
||||
return $this->unlink($path);
|
||||
} else {
|
||||
return false;
|
||||
|
@ -412,4 +412,14 @@ abstract class Common implements \OC\Files\Storage\Storage {
|
|||
protected function removeCachedFile($path) {
|
||||
unset($this->cachedFiles[$path]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
|
||||
*
|
||||
* @param string $class
|
||||
* @return bool
|
||||
*/
|
||||
public function instanceOfStorage($class) {
|
||||
return is_a($this, $class);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -440,4 +440,14 @@ class Wrapper implements \OC\Files\Storage\Storage {
|
|||
public function isLocal() {
|
||||
return $this->storage->isLocal();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
|
||||
*
|
||||
* @param string $class
|
||||
* @return bool
|
||||
*/
|
||||
public function instanceOfStorage($class) {
|
||||
return is_a($this, $class) or $this->storage->instanceOfStorage($class);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -327,4 +327,12 @@ interface Storage {
|
|||
* @return bool true if the files are stored locally, false otherwise
|
||||
*/
|
||||
public function isLocal();
|
||||
|
||||
/**
|
||||
* Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
|
||||
*
|
||||
* @param string $class
|
||||
* @return bool
|
||||
*/
|
||||
public function instanceOfStorage($class);
|
||||
}
|
||||
|
|
|
@ -464,4 +464,10 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
|
|||
|
||||
$this->assertEquals('foo', $this->instance->file_get_contents('target/test1.txt'));
|
||||
}
|
||||
|
||||
public function testInstanceOfStorage() {
|
||||
$this->assertTrue($this->instance->instanceOfStorage('\OCP\Files\Storage'));
|
||||
$this->assertTrue($this->instance->instanceOfStorage(get_class($this->instance)));
|
||||
$this->assertFalse($this->instance->instanceOfStorage('\OC'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -155,4 +155,10 @@ class Quota extends \Test\Files\Storage\Storage {
|
|||
|
||||
$this->assertEquals(1024 - 50, $instance->free_space(''));
|
||||
}
|
||||
|
||||
public function testInstanceOfStorageWrapper() {
|
||||
$this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Local'));
|
||||
$this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Wrapper\Wrapper'));
|
||||
$this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Wrapper\Quota'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,4 +23,9 @@ class Wrapper extends \Test\Files\Storage\Storage {
|
|||
public function tearDown() {
|
||||
\OC_Helper::rmdirr($this->tmpDir);
|
||||
}
|
||||
|
||||
public function testInstanceOfStorageWrapper() {
|
||||
$this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Local'));
|
||||
$this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Wrapper\Wrapper'));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue