Browse Source

Add $storage->instanceOfStorage to handle instanceof for storage wrappers

remotes/origin/ldap_group_count
Robin Appelman 12 years ago
parent
commit
8c5521fdfc
  1. 14
      lib/private/files/storage/common.php
  2. 10
      lib/private/files/storage/wrapper/wrapper.php
  3. 8
      lib/public/files/storage.php
  4. 6
      tests/lib/files/storage/storage.php
  5. 6
      tests/lib/files/storage/wrapper/quota.php
  6. 5
      tests/lib/files/storage/wrapper/wrapper.php

14
lib/private/files/storage/common.php

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

10
lib/private/files/storage/wrapper/wrapper.php

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

8
lib/public/files/storage.php

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

6
tests/lib/files/storage/storage.php

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

6
tests/lib/files/storage/wrapper/quota.php

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

5
tests/lib/files/storage/wrapper/wrapper.php

@ -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…
Cancel
Save