Use /files in view fakeRoot ref #99

This commit is contained in:
Victor Dubiniuk 2013-11-06 20:49:48 +03:00
parent cc0fa14988
commit 4dc1064d44
3 changed files with 22 additions and 6 deletions

View File

@ -48,12 +48,16 @@ class Db_Session extends \OCA\Documents\Db {
if (!$oldSession->hasData()){ if (!$oldSession->hasData()){
//TODO: check if genesis document is a valid odt //TODO: check if genesis document is a valid odt
$genesisPath = $ownerView->storeDocument($ownerView, $path); $genesisPath = $ownerView->storeDocument(
$file->getOwner(),
$path
);
if (!$genesisPath){ if (!$genesisPath){
throw new \Exception('Unable to copy document. Check permissions and make sure you have enought free space.'); throw new \Exception('Unable to copy document. Check permissions and make sure you have enought free space.');
} }
$hash = $ownerView->getHashByGenesis($genesisPath); $hash = $ownerView->getHashByGenesis($file->getOwner(), $genesisPath);
$newSession = new Db_Session(array( $newSession = new Db_Session(array(
$genesisPath, $hash, $file->getOwner(), $file->getFileId() $genesisPath, $hash, $file->getOwner(), $file->getFileId()

View File

@ -103,7 +103,15 @@ class File {
$this->owner = $owner; $this->owner = $owner;
} }
$view = new View('/' . $this->owner); /* to emit hooks properly, view root should contain /user/files */
if (strpos($this->path, 'files') === 0){
$this->path = preg_replace('|^files|', '', $this->path);
$view = new View('/' . $this->owner . '/files');
} else {
$view = new View('/' . $this->owner);
}
if (!$view->file_exists($this->path)){ if (!$view->file_exists($this->path)){
throw new \Exception($this->path . ' doesn\'t exist'); throw new \Exception($this->path . ' doesn\'t exist');
} }

View File

@ -34,10 +34,13 @@ class View extends \OC\Files\View{
return $permissions; return $permissions;
} }
public function storeDocument($ownerView, $filePath){ public function storeDocument($owner, $filePath){
$proxyStatus = \OC_FileProxy::$enabled; $proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
$ownerView = new View('/' . $owner);
$filePath = '/files' . $filePath;
if (!$ownerView->file_exists($filePath)){ if (!$ownerView->file_exists($filePath)){
throw new \Exception($filePath . ' doesn\'t exist'); throw new \Exception($filePath . ' doesn\'t exist');
} }
@ -57,7 +60,8 @@ class View extends \OC\Files\View{
return $newName; return $newName;
} }
public function getHashByGenesis($genesisPath){ public function getHashByGenesis($owner, $genesisPath){
return sha1($this->file_get_contents(self::DOCUMENTS_DIRNAME . $genesisPath)); $ownerView = new View('/' . $owner);
return sha1($ownerView->file_get_contents(self::DOCUMENTS_DIRNAME . $genesisPath));
} }
} }