diff --git a/ajax/admin.php b/ajax/admin.php index 585d6834..086ffeed 100644 --- a/ajax/admin.php +++ b/ajax/admin.php @@ -5,8 +5,6 @@ namespace OCA\Documents; \OCP\JSON::callCheck(); \OCP\JSON::checkAdminUser(); -$l10n = \OCP\Util::getL10N('documents'); - $converter = isset($_POST['converter']) ? $_POST['converter'] : null; $url = isset($_POST['url']) ? $_POST['url'] : null; try { @@ -21,7 +19,7 @@ try { if (Config::getConverter()!='local'){ if (!Converter::checkConnection()){ Helper::warnLog('Bad response from Format Filter Server'); - \OCP\JSON::error(array('message' => $l10n->t('Format filter server is down or misconfigured') )); + \OCP\JSON::error(array('message' => Config::getL10n()->t('Format filter server is down or misconfigured') )); exit(); } } diff --git a/ajax/controller.php b/ajax/controller.php index 39d6663d..348e6999 100644 --- a/ajax/controller.php +++ b/ajax/controller.php @@ -37,7 +37,6 @@ class Controller { \OCP\JSON::callCheck(); } \OCP\JSON::checkAppEnabled('documents'); - return '(guest)'; } } diff --git a/ajax/documentController.php b/ajax/documentController.php index cf007641..b5eb322c 100644 --- a/ajax/documentController.php +++ b/ajax/documentController.php @@ -16,8 +16,6 @@ class DocumentController extends Controller{ const ODT_TEMPLATE = 'UEsDBBQAAAgAAC6aLENexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALposQ9dwh9LYAgAA2AIAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAxgAAAQAIAgAAAGc/nhcAAAKfSURBVHic7dKxCQAwDMCwDvn/5fQJQ6FIF3jw7O6BzrwO4DeWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYheoVwb+sqPDzwAAAABJRU5ErkJgglBLAwQUAAgICAAumixDAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1s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bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG9mZmljZTpkb2N1bWVudC1tZXRhIHhtbG5zOm9mZmljZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczptZXRhPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wIiB4bWxuczptYXRoPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIiB4bWxuczpmb3JtPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmZvcm06MS4wIiB4bWxuczpvb289Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L29mZmljZSIgeG1sbnM6Z3JkZGw9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvZy9kYXRhLXZpZXcjIiBvZmZpY2U6dmVyc2lvbj0iMS4yIj48b2ZmaWNlOm1ldGE+PG1ldGE6aW5pdGlhbC1jcmVhdG9yPlZpY3RvciBEdWJpbml1azwvbWV0YTppbml0aWFsLWNyZWF0b3I+PG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDEzLTA5LTEyVDIyOjE3OjAzPC9tZXRhOmNyZWF0aW9uLWRhdGU+PG1ldGE6ZG9jdW1lbnQtc3RhdGlzdGljIG1ldGE6dGFibGUtY291bnQ9IjAiIG1ldGE6aW1hZ2UtY291bnQ9IjAiIG1ldGE6b2JqZWN0LWNvdW50PSIwIiBtZXRhOnBhZ2UtY291bnQ9IjEiIG1ldGE6cGFyYWdyYXBoLWNvdW50PSIwIiBtZXRhOndvcmQtY291bnQ9IjAiIG1ldGE6Y2hhcmFjdGVyLWNvdW50PSIwIiBtZXRhOm5vbi13aGl0ZXNwYWNlLWNoYXJhY3Rlci1jb3VudD0iMCIvPjxtZXRhOmdlbmVyYXRvcj5MaWJyZU9mZmljZS8zLjYkTGludXhfWDg2XzY0IExpYnJlT2ZmaWNlX3Byb2pl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'; public static function create($args){ - $l10n = \OCP\Util::getL10N('documents'); - $uid = self::preDispatch(); $view = new \OC\Files\View('/' . $uid . '/files'); @@ -42,7 +40,7 @@ class DocumentController extends Controller{ \OCP\JSON::success(array ('fileid' => $info['fileid']) ); } else { \OCP\JSON::error( - array ('message' => $l10n->t('Can\'t create document')) + array ('message' => Config::getL10n()->t('Can\'t create document')) ); } } @@ -53,19 +51,13 @@ class DocumentController extends Controller{ * @param array $args - array containing session id as an element with a key es_id */ public static function serve($args){ - $session = new Db_Session(); - $sessionData = $session->load(@$args['es_id'])->getData(); + $session->load(@$args['es_id']); - $file = new File(@$sessionData['file_id']); - if (!$file->isPublicShare()){ - self::preDispatch(); - } else { - self::preDispatchGuest(); - } + self::preDispatchGuest(); - $filename = isset($sessionData['genesis_url']) ? $sessionData['genesis_url'] : ''; - $download = new Download($sessionData['owner'], $filename); + $filename = $session->getGenesisUrl() ? $session->getGenesisUrl() : ''; + $download = new Download($session->getOwner(), $filename); $download->sendResponse(); } @@ -73,13 +65,11 @@ class DocumentController extends Controller{ public static function rename($args){ $uid = self::preDispatch(); - $fileId = intval(@$args['file_id']); - $name = @$_POST['name']; - + $fileId = intval(Helper::getArrayValueByKey($args, 'file_id', 0)); + $name = Helper::getArrayValueByKey($_POST, 'name'); + $view = \OC\Files\Filesystem::getView(); $path = $view->getPath($fileId); - - $l = new \OC_L10n('documents'); if (isset($name) && $view->is_file($path) && $view->isUpdatable($path)) { $newPath = dirname($path) . '/' . $name; @@ -89,7 +79,7 @@ class DocumentController extends Controller{ } } \OCP\JSON::error(array( - 'message' => $l->t('You don\'t have permission to rename this document') + 'message' => Config::getL10n()->t('You don\'t have permission to rename this document') )); } @@ -100,13 +90,16 @@ class DocumentController extends Controller{ public static function listAll(){ self::preDispatch(); - $documents = Storage::getDocuments(); + $found = Storage::getDocuments(); $fileIds = array(); - - //$previewAvailable = \OCP\Preview::show($file); - foreach ($documents as $key=>$document) { - //\OCP\Preview::show($document['path']); + $documents = array(); + foreach ($found as $key=>$document) { + if (is_object($document)){ + $documents[] = $document->getData(); + } else { + $documents[$key] = $document; + } $documents[$key]['icon'] = preg_replace('/\.png$/', '.svg', \OC_Helper::mimetypeIcon($document['mimetype'])); $fileIds[] = $document['fileid']; } diff --git a/ajax/otpoll.php b/ajax/otpoll.php index 6a83f824..bb3e30e6 100644 --- a/ajax/otpoll.php +++ b/ajax/otpoll.php @@ -32,35 +32,38 @@ try{ $esId = $request->getParam('args/es_id'); $session = new Db_Session(); - $sessionData = $session->load($esId)->getData(); + $session->load($esId); + + $memberId = $request->getParam('args/member_id'); + $member = new Db_Member(); + $member->load($memberId); + + if ($member->getIsGuest() || is_null($member->getIsGuest())){ + Controller::preDispatchGuest(false); + } else { + Controller::preDispatch(false); + } try { - $file = new File(@$sessionData['file_id']); + $file = new File($session->getFileId()); } catch (\Exception $e){ Helper::warnLog('Error. Session no longer exists. ' . $e->getMessage()); $ex = new BadRequestException(); $ex->setBody($request->getRawRequest()); throw $ex; } - if (!$file->isPublicShare()){ - Controller::preDispatch(false); - } else { - Controller::preDispatchGuest(false); - } $command = $request->getParam('command'); switch ($command){ case 'sync_ops': $seqHead = (string) $request->getParam('args/seq_head'); if (!is_null($seqHead)){ - $memberId = $request->getParam('args/member_id'); $ops = $request->getParam('args/client_ops'); $hasOps = is_array($ops) && count($ops)>0; $op = new Db_Op(); $currentHead = $op->getHeadSeq($esId); - $member = new Db_Member(); try { $member->updateActivity($memberId); } catch (\Exception $e){ diff --git a/ajax/sessionController.php b/ajax/sessionController.php index b3db8bb8..6750116c 100644 --- a/ajax/sessionController.php +++ b/ajax/sessionController.php @@ -15,12 +15,16 @@ namespace OCA\Documents; class SessionController extends Controller{ public static function joinAsGuest($args){ - $uid = self::preDispatchGuest(); - $uid = substr(@$_POST['name'], 0, 16) .' '. $uid; - $token = @$args['token']; + self::preDispatchGuest(); + + $uid = Helper::getArrayValueByKey($_POST, 'name'); + $guestUid = substr($uid, 0, 16); + try { + $token = Helper::getArrayValueByKey($args, 'token'); $file = File::getByShareToken($token); - self::join($uid, $file); + $session = Db_Session::start($uid, $file, true); + \OCP\JSON::success($session); } catch (\Exception $e){ Helper::warnLog('Starting a session failed. Reason: ' . $e->getMessage()); \OCP\JSON::error(); @@ -30,16 +34,20 @@ class SessionController extends Controller{ public static function joinAsUser($args){ $uid = self::preDispatch(); - $fileId = intval(@$args['file_id']); + $fileId = Helper::getArrayValueByKey($args, 'file_id'); try { - $file = new File($fileId); - - if ($file->getPermissions() & \OCP\PERMISSION_UPDATE) { - self::join($uid, $file); + $view = \OC\Files\Filesystem::getView(); + $path = $view->getPath($fileId); + + if ($view->isUpdatable($path)) { + $file = new File($fileId); + $session = Db_Session::start($uid, $file); + \OCP\JSON::success($session); } else { + $info = $view->getFileInfo(); \OCP\JSON::success(array( - 'permissions' => $file->getPermissions(), + 'permissions' => $info['permissions'], 'id' => $fileId )); } @@ -51,11 +59,6 @@ class SessionController extends Controller{ } } - protected static function join($uid, $file){ - $session = Db_Session::start($uid, $file); - \OCP\JSON::success($session); - exit(); - } /** * Store the document content to its origin @@ -68,6 +71,19 @@ class SessionController extends Controller{ } $memberId = @$_SERVER['HTTP_WEBODF_MEMBER_ID']; + $currentMember = new Db_Member(); + $currentMember->load($memberId); + if (is_null($currentMember->getIsGuest()) || $currentMember->getIsGuest()){ + $uid = self::preDispatchGuest(); + } else { + self::preDispatch(); + } + + //check if member belongs to the session + if ($esId != $currentMember->getEsId()){ + throw new \Exception($memberId . ' does not belong to session ' . $esId); + } + $sessionRevision = @$_SERVER['HTTP_WEBODF_SESSION_REVISION']; $stream = fopen('php://input','r'); @@ -79,22 +95,21 @@ class SessionController extends Controller{ $session = new Db_Session(); $session->load($esId); - if (!$session->hasData()){ + if (!$session->getEsId()){ throw new \Exception('Session does not exist'); } - $sessionData = $session->getData(); + try { - $file = new File($sessionData['file_id']); - if (!$file->isPublicShare()){ - self::preDispatch(); + if ($currentMember->getIsGuest()){ + $file = File::getByShareToken($currentMember->getToken()); } else { - self::preDispatchGuest(); + $file = new File($session->getFileId()); } + list($view, $path) = $file->getOwnerViewAndPath(); } catch (\Exception $e){ //File was deleted or unshared. We need to save content as new file anyway //Sorry, but for guests it would be lost :( - $uid = self::preDispatch(); $view = new \OC\Files\View('/' . $uid . '/files'); $dir = \OCP\Config::getUserValue(\OCP\User::getUser(), 'documents', 'save_path', ''); @@ -109,23 +124,17 @@ class SessionController extends Controller{ }, $members ); - - //check if member belongs to the session - if (!in_array($memberId, $memberIds)){ - throw new \Exception($memberId . ' does not belong to session ' . $esId); - } // Active users except current user $memberCount = count($memberIds) - 1; - if ($view->file_exists($path)){ - + if ($view->file_exists($path)){ $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; $currentHash = sha1($view->file_get_contents($path)); \OC_FileProxy::$enabled = $proxyStatus; - if (!Helper::isVersionsEnabled() && $currentHash !== $sessionData['genesis_hash']){ + if (!Helper::isVersionsEnabled() && $currentHash !== $session->getGenesisHash()){ // Original file was modified externally. Save to a new one $path = Helper::getNewFileName($view, $path, '-conflict'); } @@ -142,7 +151,6 @@ class SessionController extends Controller{ if ($memberCount>0){ // Update genesis hash to prevent conflicts Helper::debugLog('Update hash'); - $session->updateGenesisHash($esId, sha1($data['content'])); } else { // Last user. Kill session data diff --git a/ajax/userController.php b/ajax/userController.php index 94111c9b..e47d2a31 100644 --- a/ajax/userController.php +++ b/ajax/userController.php @@ -29,8 +29,7 @@ class UserController extends Controller{ $member = new Db_Member(); $member->loadBy('member_id', $args['member_id']); if ($esId && $member->hasData()){ - $memberData = $member->getData(); - if ($memberData['es_id']===$esId && $memberData['status']==Db_Member::MEMBER_STATUS_ACTIVE){ + if ($member->getEsId() === $esId && $member->getStatus() == Db_Member::MEMBER_STATUS_ACTIVE){ $member->deactivate(array($args['member_id'])); $op = new Db_Op(); $op->removeMember($esId, $args['member_id']); @@ -40,19 +39,24 @@ class UserController extends Controller{ } public static function rename($args){ + self::preDispatchGuest(); + $memberId = Helper::getArrayValueByKey($args, 'member_id'); $name = Helper::getArrayValueByKey($_POST, 'name'); $member = new Db_Member(); $member->load($memberId); - $memberData = $member->getData(); - if (count($memberData) && $memberData['status']==Db_Member::MEMBER_STATUS_ACTIVE - && preg_match('/.* \(guest\)$/', $memberData['uid']) + + if ($member->getEsId() + && $member->getStatus() == Db_Member::MEMBER_STATUS_ACTIVE + && $member->getIsGuest() ){ - if (!preg_match('/.* \(guest\)$/', $name)){ - $name .= ' (guest)'; + $guestMark = Db_Member::getGuestPostfix(); + if (substr($name, -strlen($guestMark)) !== $guestMark){ + $name = $name . ' ' . $guestMark; } + $op = new Db_Op(); - $op->changeNick($memberData['es_id'], $memberId, $name); + $op->changeNick($member->getEsId(), $memberId, $name); } \OCP\JSON::success(); } diff --git a/appinfo/app.php b/appinfo/app.php index 03a57a17..ae84f71b 100755 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -4,7 +4,7 @@ * ownCloud - Documents App * * @author Frank Karlitschek - * @copyright 2011 Frank Karlitschek karlitschek@kde.org + * @copyright 2013-2014 Frank Karlitschek karlitschek@kde.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -26,14 +26,12 @@ OCP\App::register(array('order' => 70, 'id' => 'documents', 'name' => 'Documents \OCP\App::registerAdmin('documents', 'admin'); OCP\App::registerPersonal('documents', 'personal'); -$l10n = \OCP\Util::getL10N('documents'); - OCP\App::addNavigationEntry(array( 'id' => 'documents_index', 'order' => 2, 'href' => OCP\Util::linkTo('documents', 'index.php'), 'icon' => OCP\Util::imagePath('documents', 'documents.svg'), - 'name' => $l10n->t('Documents')) + 'name' => OCA\Documents\Config::getL10n()->t('Documents')) ); OC::$CLASSPATH['OCA\Documents\Controller'] = 'documents/ajax/controller.php'; diff --git a/appinfo/database.xml b/appinfo/database.xml index 864fb299..e11d3913 100644 --- a/appinfo/database.xml +++ b/appinfo/database.xml @@ -91,6 +91,21 @@ true 4 + + is_guest + integer + 0 + true + true + 1 + + + token + text + + false + 32 + status integer diff --git a/appinfo/info.xml b/appinfo/info.xml index e51570d8..9c191ca7 100755 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -5,7 +5,7 @@ An ownCloud app to work with office documents AGPL Frank Karlitschek - 5.0.19 + 6.0 true diff --git a/appinfo/update.php b/appinfo/update.php index 18ed6554..7a5274fb 100644 --- a/appinfo/update.php +++ b/appinfo/update.php @@ -28,4 +28,8 @@ if (version_compare($installedVersion, '0.7', '<=')) { )); } +} +if (version_compare($installedVersion, '0.8', '<')) { + $query = \OC_DB::prepare('UPDATE `*PREFIX*documents_member` SET `is_guest`=1 WHERE `uid` LIKE \'%(guest)\' '); + $query->execute(array()); } \ No newline at end of file diff --git a/appinfo/version b/appinfo/version index d5cc44d1..c18d72be 100755 --- a/appinfo/version +++ b/appinfo/version @@ -1 +1 @@ -0.7.2 \ No newline at end of file +0.8.1 \ No newline at end of file diff --git a/index.php b/index.php index 235192b3..5ad10608 100755 --- a/index.php +++ b/index.php @@ -4,7 +4,7 @@ * ownCloud - Documents App * * @author Frank Karlitschek - * @copyright 2011 Frank Karlitschek karlitschek@kde.org + * @copyright 2013-2014 Frank Karlitschek karlitschek@kde.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE diff --git a/js/documents.js b/js/documents.js index 66619f89..19065839 100644 --- a/js/documents.js +++ b/js/documents.js @@ -714,9 +714,9 @@ var Files = Files || { if ( $('#isPublic').length ) { urlSpec.t = $('#dirToken').val(); - previewURL = OC.Router.generate('core_ajax_public_preview', urlSpec); + previewURL = OC.generateUrl('core_ajax_public_preview/{url_spec}', {url_spec : urlSpec}); } else { - previewURL = OC.Router.generate('core_ajax_preview', urlSpec); + previewURL = OC.generateUrl('core_ajax_preview/{url_spec}', {url_spec : urlSpec}); } previewURL = previewURL.replace('(', '%28'); previewURL = previewURL.replace(')', '%29'); diff --git a/lib/config.php b/lib/config.php index d8b7be4b..52ee7825 100644 --- a/lib/config.php +++ b/lib/config.php @@ -15,6 +15,10 @@ namespace OCA\Documents; class Config { const APP_NAME = 'documents'; + public static function getL10n(){ + return \OCP\Util::getL10N(self::APP_NAME); + } + public static function getConverter(){ return self::getAppValue('converter', 'local'); } diff --git a/lib/db.php b/lib/db.php index c1a799c4..ec7141ef 100644 --- a/lib/db.php +++ b/lib/db.php @@ -206,4 +206,15 @@ abstract class Db { return $result; } + + protected function __call($name, $arguments){ + if (substr($name, 0, 3) === 'get'){ + $requestedProperty = substr($name, 3); + $property = strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", $requestedProperty)); + if (isset($this->data[$property])){ + return $this->data[$property]; + } + } + return null; + } } diff --git a/lib/db/member.php b/lib/db/member.php index 1fe827f1..73b13c22 100644 --- a/lib/db/member.php +++ b/lib/db/member.php @@ -15,7 +15,7 @@ namespace OCA\Documents; class Db_Member extends Db{ const DB_TABLE = '`*PREFIX*documents_member`'; - + const ACTIVITY_THRESHOLD = 90; // 1.5 Minutes const MEMBER_STATUS_ACTIVE = 1; @@ -23,11 +23,16 @@ class Db_Member extends Db{ protected $tableName = '`*PREFIX*documents_member`'; - protected $insertStatement = 'INSERT INTO `*PREFIX*documents_member` (`es_id`, `uid`, `color`, `last_activity`) - VALUES (?, ?, ?, ?)'; + protected $insertStatement = 'INSERT INTO `*PREFIX*documents_member` (`es_id`, `uid`, `color`, `last_activity`, `is_guest`, `token`) + VALUES (?, ?, ?, ?, ?, ?)'; protected $loadStatement = 'SELECT * FROM `*PREFIX*documents_member` WHERE `member_id`= ?'; + public static function getGuestPostfix(){ + return '(' . Config::getL10n()->t('guest') . ')'; + } + + public function updateActivity($memberId){ return $this->execute( 'UPDATE ' . $this->tableName . ' SET `last_activity`=?, `status`=? WHERE `member_id`=?', diff --git a/lib/db/session.php b/lib/db/session.php index f892859f..0c4b40d6 100644 --- a/lib/db/session.php +++ b/lib/db/session.php @@ -35,13 +35,11 @@ class Db_Session extends \OCA\Documents\Db { * @return array * @throws \Exception */ - public static function start($uid, File $file){ - list($ownerView, $path) = $file->getOwnerViewAndPath(); - + public static function start($uid, $file){ // Create a directory to store genesis + $genesis = new Genesis($file); - $genesis = new Genesis($ownerView, $path, $file->getOwner()); - + list($ownerView, $path) = $file->getOwnerViewAndPath(); $oldSession = new Db_Session(); $oldSession->loadBy('file_id', $file->getFileId()); @@ -59,55 +57,37 @@ class Db_Session extends \OCA\Documents\Db { } } - $session = $oldSession + $sessionData = $oldSession ->loadBy('file_id', $file->getFileId()) ->getData() ; - $session['title'] = basename($path); $memberColor = Helper::getMemberColor($uid); - $member = new Db_Member(array( - $session['es_id'], + $sessionData['es_id'], $uid, $memberColor, - time() + time(), + intval($file->isPublicShare()), + $file->getToken() )); if ($member->insert()){ // Do we have OC_Avatar in out disposal? if (!class_exists('\OC_Avatar') || \OC_Config::getValue('enable_avatars', true) !== true){ - //$x['avatar_url'] = \OCP\Util::linkToRoute('documents_user_avatar'); $imageUrl = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw=='; } else { - // https://github.com/owncloud/documents/issues/51 - // Temporary stub $imageUrl = $uid; - - /* - $avatar = new \OC_Avatar($uid); - $image = $avatar->get(64); - // User has an avatar - if ($image instanceof \OC_Image) { - $imageUrl = \OC_Helper::linkToRoute( - 'core_avatar_get', - array( 'user' => $uid, 'size' => 64) - ) . '?requesttoken=' . \OC::$session->get('requesttoken'); - } else { - //shortcircuit if it's not an image - $imageUrl = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw=='; - } - - */ } + + $displayName = $file->isPublicShare() ? $uid . ' ' . Db_Member::getGuestPostfix() : \OCP\User::getDisplayName($uid); - - $session['member_id'] = (string) $member->getLastInsertId(); + $sessionData['member_id'] = (string) $member->getLastInsertId(); $op = new Db_Op(); $op->addMember( - $session['es_id'], - $session['member_id'], - \OCP\User::getDisplayName($uid), + $sessionData['es_id'], + $sessionData['member_id'], + $displayName, $memberColor, $imageUrl ); @@ -115,9 +95,10 @@ class Db_Session extends \OCA\Documents\Db { throw new \Exception('Failed to add member into database'); } - $session['permissions'] = $ownerView->getFilePermissions($path); + $sessionData['title'] = basename($path); + $sessionData['permissions'] = $ownerView->getFilePermissions($path); - return $session; + return $sessionData; } public static function cleanUp($esId){ @@ -196,14 +177,8 @@ class Db_Session extends \OCA\Documents\Db { protected function getUniqueSessionId(){ $testSession = new Db_Session(); do{ - // this prevents branching for stable5 for now: - // OC_Util::generate_random_bytes was camelCased - if (method_exists('\OC_Util', 'generate_random_bytes')){ - $id = \OC_Util::generate_random_bytes(30); - } else { - $id = \OC_Util::generateRandomBytes(30); - } - }while ($testSession->load($id)->hasData()); + $id = \OC_Util::generateRandomBytes(30); + } while ($testSession->load($id)->hasData()); return $id; } diff --git a/lib/file.php b/lib/file.php index 349b5223..1dad0133 100644 --- a/lib/file.php +++ b/lib/file.php @@ -28,6 +28,7 @@ class File { protected $owner; protected $path; protected $sharing; + protected $token =''; protected $passwordProtected = false; @@ -47,28 +48,18 @@ class File { } } + public static function getByShareToken($token){ $linkItem = \OCP\Share::getShareByToken($token, false); if (is_array($linkItem) && isset($linkItem['uid_owner'])) { // seems to be a valid share $rootLinkItem = \OCP\Share::resolveReShare($linkItem); - $fileOwner = $rootLinkItem['uid_owner']; } else { throw new \Exception('This file was probably unshared'); } - if (!isset($rootLinkItem['path']) && isset($rootLinkItem['file_target'])){ - $rootLinkItem['path'] = $rootLinkItem['file_target']; - } $file = new File($rootLinkItem['file_source'], array($rootLinkItem)); - - - if (isset($rootLinkItem['uid_owner'])){ - \OC_Util::tearDownFS(); - \OC_Util::setupFS($rootLinkItem['uid_owner']); - $file->setOwner($rootLinkItem['uid_owner']); - $file->setPath(\OC\Files\Filesystem::getPath($linkItem['file_source'])); - } + $file->setToken($token); if (isset($linkItem['share_with']) && !empty($linkItem['share_with'])){ $file->setPasswordProtected(true); @@ -77,6 +68,10 @@ class File { return $file; } + public function getToken($token){ + return $this->token; + } + public function getFileId(){ return $this->fileId; } @@ -89,16 +84,12 @@ class File { $this->path = $path; } + public function setToken($token){ + $this->token = $token; + } + public function isPublicShare(){ - foreach ($this->sharing as $share){ - if ( - $share['share_type'] == \OCP\Share::SHARE_TYPE_LINK - || $share['share_type'] == \OCP\Share::SHARE_TYPE_EMAIL - ){ - return true; - } - } - return false; + return !empty($this->token); } public function isPasswordProtected(){ @@ -158,28 +149,34 @@ class File { * @throws \Exception */ public function getOwnerViewAndPath(){ - if (!$this->owner || !$this->path){ - if ($this->isPublicShare()){ - list($owner, $path) = $this->getSharedFileOwnerAndPath(); + if ($this->isPublicShare()){ + $rootLinkItem = \OCP\Share::resolveReShare($this->sharing[0]); + if (isset($rootLinkItem['uid_owner'])){ + $owner = $rootLinkItem['uid_owner']; } else { - $owner = \OCP\User::getUser(); - $path = Storage::resolvePath($this->fileId); - if (!$path){ - throw new \Exception($this->fileId . ' can not be resolved'); - } + throw new \Exception($this->fileId . ' is a broken share'); } - - $this->path = $path; - $this->owner = $owner; + $view = new View('/' . $owner . '/files'); + $path = $rootLinkItem['file_target']; + } else { + $owner = \OCP\User::getUser(); + $view = new View('/' . $this->owner); + $path = $view->getPath($this->fileId); } + + if (!$path){ + throw new \Exception($this->fileId . ' can not be resolved'); + } + $this->path = $path; + $this->owner = $owner; - $view = new View('/' . $this->owner . '/files'); if (!$view->file_exists($this->path)){ throw new \Exception($this->path . ' doesn\'t exist'); } return array($view, $this->path); } + public function getOwner(){ if (!$this->owner){ @@ -188,28 +185,6 @@ class File { return $this->owner; } - /** - * public links only - * @return array - */ - protected function getSharedFileOwnerAndPath(){ - foreach ($this->sharing as $share){ - $rootLinkItem = \OCP\Share::resolveReShare($share); - if (isset($rootLinkItem['uid_owner'])){ - $owner = $rootLinkItem['uid_owner']; - } else { - $owner = false; - } - \OC_Util::tearDownFS(); - \OC_Util::setupFS($owner); - return array( - $owner, - \OC\Files\Filesystem::getPath($rootLinkItem['file_source']) - ); - } - - return $result; - } protected function getPassword(){ return $this->sharing[0]['share_with']; diff --git a/lib/filter/office.php b/lib/filter/office.php index f04456af..6b375d7f 100644 --- a/lib/filter/office.php +++ b/lib/filter/office.php @@ -15,8 +15,8 @@ namespace OCA\Documents; class Filter_Office { const NATIVE_MIMETYPE = 'application/vnd.oasis.opendocument.text'; - private static $readSpec; - private static $writeSpec; + private $readSpec; + private $writeSpec; /* sample mimespec array ( diff --git a/lib/genesis.php b/lib/genesis.php index c038d699..c00c197b 100644 --- a/lib/genesis.php +++ b/lib/genesis.php @@ -35,11 +35,12 @@ class Genesis { /** * Create new genesis document - * @param OCA\Documents\View $view Filesystem view with root '/user/files' - * @param string $path relative path - * @param string $owner file owner + * @param OCA\Documents\File $file * */ - public function __construct(\OCA\Documents\View $view, $path, $owner){ + public function __construct(\OCA\Documents\File $file){ + list($view, $path) = $file->getOwnerViewAndPath(); + $owner = $file->getOwner(); + $this->view = new View('/' . $owner); if (!$this->view->file_exists(self::DOCUMENTS_DIRNAME)){ diff --git a/lib/storage.php b/lib/storage.php index d8f0e3fc..3efd58c9 100644 --- a/lib/storage.php +++ b/lib/storage.php @@ -4,7 +4,7 @@ * ownCloud - Documents App * * @author Frank Karlitschek - * @copyright 2012 Frank Karlitschek frank@owncloud.org + * @copyright 2013-2014 Frank Karlitschek frank@owncloud.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -71,25 +71,22 @@ class Storage { return; } - $sessionObj = new Db_Session(); - $session = $sessionObj - ->loadBy('file_id', $fileId) - ->getData() - ; + $session = new Db_Session(); + $session->loadBy('file_id', $fileId); - if (!is_array($session) || !isset($session['es_id'])){ + if (!$session->getEsId()){ return; } $member = new Db_Member(); - $sessionMembers = $member->getCollectionBy('es_id', $session['es_id']); + $sessionMembers = $member->getCollectionBy('es_id', $session->getEsId()); foreach ($sessionMembers as $memberData){ if (intval($memberData['status'])===Db_Member::MEMBER_STATUS_ACTIVE){ return; } } - Db_Session::cleanUp($session['es_id']); + Db_Session::cleanUp($session->getEsId()); } protected static function searchDocuments(){ diff --git a/public.php b/public.php index 52cbcffc..22938b9e 100644 --- a/public.php +++ b/public.php @@ -40,9 +40,14 @@ if (isset($_GET['t'])) { \OCP\Util::addScript('documents', 'documents'); if ($file->getFileId()){ $session = new Db_Session(); - $sessionData = $session->loadBy('file_id', $file->getFileId())->getData(); - $member = new Db_Member(); - $members = $member->getCollectionBy('es_id', $sessionData['es_id']); + $session->loadBy('file_id', $file->getFileId()); + + if ($session->getEsId()){ + $member = new Db_Member(); + $members = $member->getCollectionBy('es_id', $session->getEsId()); + } else { + $members = 0; + } $tmpl->assign('total', count($members)+1); } else { $tmpl->assign('total', 1);