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
Родитель 1b23972732 932684b782
Коммит b2bd038152
7 изменённых файлов: 26 добавлений и 68 удалений

Просмотреть файл

@ -24,7 +24,7 @@ use \OCA\Documents\Download;
use \OCA\Documents\DownloadResponse;
use \OCA\Documents\File;
use OCA\Documents\Genesis;
use \OCA\Documents\View;
use \OC\Files\View;
class DocumentController extends Controller{
@ -45,7 +45,7 @@ class DocumentController extends Controller{
* @NoAdminRequired
*/
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', '/');
if (!$view->is_dir($dir)){
$dir = '/';

Просмотреть файл

@ -21,6 +21,7 @@ use \OCA\Documents\Db;
use \OCA\Documents\File;
use \OCA\Documents\Helper;
use OCA\Documents\Filter;
use \OC\Files\View;
class BadRequestException extends \Exception {
@ -105,6 +106,10 @@ class SessionController extends Controller{
return $response;
}
/**
* @NoAdminRequired
* @PublicPage
*/
public function poll($command, $args){
$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
//Sorry, but for guests it would be lost :(
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', '');
$path = Helper::getNewFileName($view, $dir . 'New Document.odt');

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -22,11 +22,13 @@
namespace OCA\Documents;
use \OC\Files\View;
class File {
protected $fileId;
protected $owner;
protected $path;
protected $sharing = array();
protected $sharing;
protected $token ='';
protected $passwordProtected = false;
@ -37,12 +39,7 @@ class File {
}
$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;
}
@ -55,7 +52,7 @@ class File {
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);
if (isset($linkItem['share_with']) && !empty($linkItem['share_with'])){
@ -98,7 +95,7 @@ class File {
* @return boolean
*/
public function checkPassword($password){
$shareId = $this->sharing[0]['id'];
$shareId = $this->sharing['id'];
if (!$this->isPasswordProtected()
|| (\OC::$server->getSession()->exists('public_link_authenticated')
&& \OC::$server->getSession()->get('public_link_authenticated') === $shareId
@ -130,26 +127,6 @@ class File {
$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){
if ($this->isPublicShare()){
$rootLinkItem = \OCP\Share::resolveReShare($this->sharing[0]);
if (isset($rootLinkItem['uid_owner'])){
$owner = $rootLinkItem['uid_owner'];
\OCP\JSON::checkUserExists($rootLinkItem['uid_owner']);
if (isset($this->sharing['uid_owner'])){
$owner = $this->sharing['uid_owner'];
\OCP\JSON::checkUserExists($this->sharing['uid_owner']);
\OC_Util::tearDownFS();
\OC_Util::setupFS($rootLinkItem['uid_owner']);
\OC_Util::setupFS($this->sharing['uid_owner']);
} else {
throw new \Exception($this->fileId . ' is a broken share');
}
@ -201,6 +177,6 @@ class File {
protected function getPassword(){
return $this->sharing[0]['share_with'];
return $this->sharing['share_with'];
}
}

Просмотреть файл

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

Просмотреть файл

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