Introduce Storage::getData() to allow storage implementations more control over the data array

remotes/origin/poc-doctrine-migrations
Thomas Müller 10 years ago
parent 3959f8ac4e
commit 92b60e36de
  1. 13
      lib/private/files/cache/scanner.php
  2. 17
      lib/private/files/storage/common.php
  3. 6
      lib/private/files/storage/storage.php
  4. 23
      lib/private/files/storage/wrapper/encryption.php
  5. 8
      lib/private/files/storage/wrapper/wrapper.php

@ -109,17 +109,10 @@ class Scanner extends BasicEmitter {
\OCP\Util::writeLog('OC\Files\Cache\Scanner', "!!! Path '$path' is not accessible or present !!!", \OCP\Util::DEBUG);
return null;
}
$data = array();
$data['mimetype'] = $this->storage->getMimeType($path);
$data['mtime'] = $this->storage->filemtime($path);
if ($data['mimetype'] == 'httpd/unix-directory') {
$data['size'] = -1; //unknown
} else {
$data['size'] = $this->storage->filesize($path);
}
$data['etag'] = $this->storage->getETag($path);
$data['storage_mtime'] = $data['mtime'];
$data = $this->storage->getData($path);
$data['permissions'] = $permissions;
return $data;
}

@ -580,4 +580,21 @@ abstract class Common implements Storage {
}
return $result;
}
/**
* @inheritdoc
*/
public function getData($path) {
$data = [];
$data['mimetype'] = $this->getMimeType($path);
$data['mtime'] = $this->filemtime($path);
if ($data['mimetype'] == 'httpd/unix-directory') {
$data['size'] = -1; //unknown
} else {
$data['size'] = $this->filesize($path);
}
$data['etag'] = $this->getETag($path);
$data['storage_mtime'] = $data['mtime'];
return $data;
}
}

@ -70,4 +70,10 @@ interface Storage extends \OCP\Files\Storage {
*/
public function getStorageCache();
/**
* @param $path
* @return array
*/
public function getData($path);
}

@ -110,6 +110,29 @@ class Encryption extends Wrapper {
return $this->storage->filesize($path);
}
/**
* @param $path
* @return array
*/
public function getData($path) {
$data = $this->storage->getData($path);
$fullPath = $this->getFullPath($path);
if (isset($this->unencryptedSize[$fullPath])) {
$size = $this->unencryptedSize[$fullPath];
$data['encrypted'] = true;
$data['size'] = $size;
} else {
$info = $this->getCache()->get($path);
if (isset($info['fileid']) && $info['encrypted']) {
$data['encrypted'] = true;
$data['size'] = $info['size'];
}
}
return $data;
}
/**
* see http://php.net/manual/en/function.file_get_contents.php
*

@ -525,4 +525,12 @@ class Wrapper implements \OC\Files\Storage\Storage {
public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
return $this->storage->moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
}
/**
* @param $path
* @return array
*/
public function getData($path) {
return $this->storage->getData($path);
}
}

Loading…
Cancel
Save