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);