Merge pull request #398 from owncloud/further-file-simplify

Sharing info is needed for public links only.
This commit is contained in:
VicDeo 2014-11-11 20:38:03 +03:00
commit b2bd038152
7 changed files with 26 additions and 68 deletions

View File

@ -24,7 +24,7 @@ use \OCA\Documents\Download;
use \OCA\Documents\DownloadResponse; use \OCA\Documents\DownloadResponse;
use \OCA\Documents\File; use \OCA\Documents\File;
use OCA\Documents\Genesis; use OCA\Documents\Genesis;
use \OCA\Documents\View; use \OC\Files\View;
class DocumentController extends Controller{ class DocumentController extends Controller{
@ -45,7 +45,7 @@ class DocumentController extends Controller{
* @NoAdminRequired * @NoAdminRequired
*/ */
public function create(){ public function create(){
$view = new \OC\Files\View('/' . $this->uid . '/files'); $view = new View('/' . $this->uid . '/files');
$dir = $this->settings->getUserValue($this->uid, $this->appName, 'save_path', '/'); $dir = $this->settings->getUserValue($this->uid, $this->appName, 'save_path', '/');
if (!$view->is_dir($dir)){ if (!$view->is_dir($dir)){
$dir = '/'; $dir = '/';

View File

@ -21,6 +21,7 @@ use \OCA\Documents\Db;
use \OCA\Documents\File; use \OCA\Documents\File;
use \OCA\Documents\Helper; use \OCA\Documents\Helper;
use OCA\Documents\Filter; use OCA\Documents\Filter;
use \OC\Files\View;
class BadRequestException extends \Exception { class BadRequestException extends \Exception {
@ -105,6 +106,10 @@ class SessionController extends Controller{
return $response; return $response;
} }
/**
* @NoAdminRequired
* @PublicPage
*/
public function poll($command, $args){ public function poll($command, $args){
$response = new JSONResponse(); $response = new JSONResponse();
@ -260,7 +265,7 @@ class SessionController extends Controller{
//File was deleted or unshared. We need to save content as new file anyway //File was deleted or unshared. We need to save content as new file anyway
//Sorry, but for guests it would be lost :( //Sorry, but for guests it would be lost :(
if ($this->uid){ if ($this->uid){
$view = new \OC\Files\View('/' . $this->uid . '/files'); $view = new View('/' . $this->uid . '/files');
$dir = \OCP\Config::getUserValue($this->uid, 'documents', 'save_path', ''); $dir = \OCP\Config::getUserValue($this->uid, 'documents', 'save_path', '');
$path = Helper::getNewFileName($view, $dir . 'New Document.odt'); $path = Helper::getNewFileName($view, $dir . 'New Document.odt');

View File

@ -103,7 +103,8 @@ class Session extends \OCA\Documents\Db {
} }
$sessionData['title'] = basename($path); $sessionData['title'] = basename($path);
$sessionData['permissions'] = $ownerView->getFilePermissions($path); $fileInfo = $ownerView->getFileInfo($path);
$sessionData['permissions'] = $fileInfo->getPermissions();
return $sessionData; return $sessionData;
} }

View File

@ -13,6 +13,7 @@ namespace OCA\Documents;
use \OCP\AppFramework\Http; use \OCP\AppFramework\Http;
use \OCP\IRequest; use \OCP\IRequest;
use \OC\Files\View;
class DownloadResponse extends \OCP\AppFramework\Http\Response { class DownloadResponse extends \OCP\AppFramework\Http\Response {
private $request; private $request;

View File

@ -22,11 +22,13 @@
namespace OCA\Documents; namespace OCA\Documents;
use \OC\Files\View;
class File { class File {
protected $fileId; protected $fileId;
protected $owner; protected $owner;
protected $path; protected $path;
protected $sharing = array(); protected $sharing;
protected $token =''; protected $token ='';
protected $passwordProtected = false; protected $passwordProtected = false;
@ -37,13 +39,8 @@ class File {
} }
$this->fileId = $fileId; $this->fileId = $fileId;
//if you know how to get sharing info by fileId via API,
//please send me a link to video tutorial :/
if (!is_null($shareOps)){
$this->sharing = $shareOps; $this->sharing = $shareOps;
} }
}
public static function getByShareToken($token){ public static function getByShareToken($token){
@ -55,7 +52,7 @@ class File {
throw new \Exception('This file was probably unshared'); throw new \Exception('This file was probably unshared');
} }
$file = new File($rootLinkItem['file_source'], array($rootLinkItem)); $file = new File($rootLinkItem['file_source'], $rootLinkItem);
$file->setToken($token); $file->setToken($token);
if (isset($linkItem['share_with']) && !empty($linkItem['share_with'])){ if (isset($linkItem['share_with']) && !empty($linkItem['share_with'])){
@ -98,7 +95,7 @@ class File {
* @return boolean * @return boolean
*/ */
public function checkPassword($password){ public function checkPassword($password){
$shareId = $this->sharing[0]['id']; $shareId = $this->sharing['id'];
if (!$this->isPasswordProtected() if (!$this->isPasswordProtected()
|| (\OC::$server->getSession()->exists('public_link_authenticated') || (\OC::$server->getSession()->exists('public_link_authenticated')
&& \OC::$server->getSession()->get('public_link_authenticated') === $shareId && \OC::$server->getSession()->get('public_link_authenticated') === $shareId
@ -130,26 +127,6 @@ class File {
$this->passwordProtected = $value; $this->passwordProtected = $value;
} }
public function getPermissions(){
if (count($this->sharing)){
if ($this->isPublicShare()){
$permissions = \OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE;
} else {
$permissions = $this->sharing[0]['permissions'];
}
} else {
list($owner, $path) = $this->getOwnerViewAndPath();
$permissions = 0;
if (\OC\Files\Filesystem::isReadable($path)){
$permissions |= \OCP\PERMISSION_READ;
}
if (\OC\Files\Filesystem::isUpdatable($path)){
$permissions |= \OCP\PERMISSION_UPDATE;
}
}
return $permissions;
}
/** /**
* *
@ -158,12 +135,11 @@ class File {
*/ */
public function getOwnerViewAndPath($useDefaultRoot = false){ public function getOwnerViewAndPath($useDefaultRoot = false){
if ($this->isPublicShare()){ if ($this->isPublicShare()){
$rootLinkItem = \OCP\Share::resolveReShare($this->sharing[0]); if (isset($this->sharing['uid_owner'])){
if (isset($rootLinkItem['uid_owner'])){ $owner = $this->sharing['uid_owner'];
$owner = $rootLinkItem['uid_owner']; \OCP\JSON::checkUserExists($this->sharing['uid_owner']);
\OCP\JSON::checkUserExists($rootLinkItem['uid_owner']);
\OC_Util::tearDownFS(); \OC_Util::tearDownFS();
\OC_Util::setupFS($rootLinkItem['uid_owner']); \OC_Util::setupFS($this->sharing['uid_owner']);
} else { } else {
throw new \Exception($this->fileId . ' is a broken share'); throw new \Exception($this->fileId . ' is a broken share');
} }
@ -201,6 +177,6 @@ class File {
protected function getPassword(){ protected function getPassword(){
return $this->sharing[0]['share_with']; return $this->sharing['share_with'];
} }
} }

View File

@ -22,6 +22,8 @@
namespace OCA\Documents; namespace OCA\Documents;
use \OC\Files\View;
class Genesis { class Genesis {
const DOCUMENTS_DIRNAME='/documents'; const DOCUMENTS_DIRNAME='/documents';
@ -37,7 +39,7 @@ class Genesis {
* Create new genesis document * Create new genesis document
* @param File $file * @param File $file
* */ * */
public function __construct(\OCA\Documents\File $file){ public function __construct(File $file){
list($view, $path) = $file->getOwnerViewAndPath(); list($view, $path) = $file->getOwnerViewAndPath();
$owner = $file->getOwner(); $owner = $file->getOwner();
@ -96,7 +98,7 @@ class Genesis {
/** /**
* Check if genesis is valid * Check if genesis is valid
* @param OCA\Documents\View $view * @param \OC\Files\View $view
* @param string $path relative to the view * @param string $path relative to the view
* @throws \Exception * @throws \Exception
*/ */

View File

@ -1,27 +0,0 @@
<?php
/**
* ownCloud - Documents App
*
* @author Victor Dubiniuk
* @copyright 2013 Victor Dubiniuk victor.dubiniuk@gmail.com
*
* This file is licensed under the Affero General Public License version 3 or
* later.
*/
namespace OCA\Documents;
class View extends \OC\Files\View{
public function getFilePermissions($path){
$permissions = 0;
if ($this->isReadable($path)) {
$permissions |= \OCP\PERMISSION_READ;
}
if ($this->isSharable($path)) {
$permissions |= \OCP\PERMISSION_SHARE;
}
return $permissions;
}
}