Merge pull request #86 from pranavk/files_external

Add support for opening and editing files from external storage
pull/1/head
Andras Timar 8 years ago committed by GitHub
commit 2f2701184c

@ -423,17 +423,23 @@ class DocumentController extends Controller {
return false; return false;
} }
// Login the user to see his mount locations
$this->loginUser($res['owner']);
$view = new \OC\Files\View('/' . $res['owner'] . '/files'); $view = new \OC\Files\View('/' . $res['owner'] . '/files');
$info = $view->getFileInfo($res['path']); $info = $view->getFileInfo($res['path']);
\OC::$server->getLogger()->debug('File info: {info}.', [ 'app' => $this->appName, 'info' => $info ]); // Close the session created for user login
\OC::$server->getSession()->close();
$baseFileName = $info['name'];
$size = $info['size'];
if (!$info) {
http_response_code(404);
return false;
}
\OC::$server->getLogger()->debug('File info: {info}.', [ 'app' => $this->appName, 'info' => $info ]);
return array( return array(
'BaseFileName' => $baseFileName, 'BaseFileName' => $info['name'],
'Size' => $size, 'Size' => $info['size'],
'Version' => $version 'Version' => $version
//'DownloadUrl' => '', //'DownloadUrl' => '',
//'FileUrl' => '', //'FileUrl' => '',
@ -464,26 +470,32 @@ class DocumentController extends Controller {
//TODO: Support X-WOPIMaxExpectedSize header. //TODO: Support X-WOPIMaxExpectedSize header.
$res = $row->getPathForToken($fileId, $version, $token); $res = $row->getPathForToken($fileId, $version, $token);
$ownerid = $res['owner'];
// Login the user to see his mount locations
$this->loginUser($ownerid);
$filename = '';
// If some previous version is requested, fetch it from Files_Version app // If some previous version is requested, fetch it from Files_Version app
if ($version !== '0') { if ($version !== '0') {
\OCP\JSON::checkAppEnabled('files_versions'); \OCP\JSON::checkAppEnabled('files_versions');
$ownerid = $res['owner'];
// Setup the FS // Setup the FS
\OC_Util::tearDownFS(); \OC_Util::tearDownFS();
\OC_Util::setupFS($ownerid, '/' . $ownerid . '/files'); \OC_Util::setupFS($ownerid, '/' . $ownerid . '/files');
list($owner_uid, $filename) = \OCA\Files_Versions\Storage::getUidAndFilename($res['path']); list($ownerid, $filename) = \OCA\Files_Versions\Storage::getUidAndFilename($res['path']);
$versionName = '/files_versions/' . $filename . '.v' . $version; $filename = '/files_versions/' . $filename . '.v' . $version;
\OC_Util::tearDownFS(); \OC_Util::tearDownFS();
} else {
return new DownloadResponse($this->request, $owner_uid, $versionName); $filename = '/files' . $res['path'];
} }
return new DownloadResponse($this->request, $res['owner'], '/files' . $res['path']); // Close the session created for user login
\OC::$server->getSession()->close();
return new DownloadResponse($this->request, $ownerid, $filename);
} }
/** /**

@ -120,15 +120,6 @@ class Wopi extends \OCA\Richdocuments\Db{
return false; return false;
} }
$owner = $row['owner_uid']; return array('owner' => $row['owner_uid'], 'editor' => $row['editor_uid'], 'path' => $row['path']);
$view = new \OC\Files\View('/' . $owner . '/files');
$path = $row['path'];
if (!$view->is_file($path)) {
throw new \Exception('Invalid file path.');
}
$editor = $row['editor_uid'];
return array('owner' => $owner, 'editor' => $editor, 'path' => $path);
} }
} }

Loading…
Cancel
Save