Disconnect user on leaving a session. Closes #15

pull/1/head
Victor Dubiniuk 11 years ago
parent 90ec49b7ec
commit 9b0afdd44a

@ -85,7 +85,11 @@ class DocumentController extends Controller{
$members = array();
$member = new Db_Member();
foreach ($sessions as $session) {
$members[$session['es_id']] = $member->getCollectionBy('es_id', $session['es_id']);
$sessionMembers = $member->getCollectionBy('es_id', $session['es_id']);
$activeMembers = array_filter($sessionMembers, function($member){
return $member['status']==Db_Member::MEMBER_STATUS_ACTIVE;
});
$members[$session['es_id']] = $activeMembers;
}
\OCP\JSON::success(array('documents' => $documents,'sessions' => $sessions,'members' => $members));

@ -14,6 +14,29 @@ namespace OCA\Documents;
class UserController extends Controller{
public static function disconnectUser($args){
$uid = self::preDispatch();
self::disconnect($args, $uid);
}
public static function disconnectGuest($args){
self::preDispatchGuest();
self::disconnect($args, false);
}
protected static function disconnect($args, $uid){
$esId = @$_POST['esId'];
$member = new Db_Member();
$member->loadBy('member_id', $args['member_id']);
if ($esId && $member->hasData()){
$memberData = $member->getData();
if ($memberData['es_id']===$esId){
$member->deactivate(array($args['member_id']));
}
}
\OCP\JSON::success();
}
/**
* Invite users to the editing session
*/

@ -87,6 +87,16 @@ $this->create('documents_user_avatar', 'ajax/user/avatar')
->action('\OCA\Documents\UserController', 'sendAvatar')
;
$this->create('documents_user_disconnect', 'ajax/user/disconnect/{member_id}')
->post()
->action('\OCA\Documents\UserController', 'disconnectUser')
;
$this->create('documents_user_disconnectGuest', 'ajax/user/disconnectGuest/{member_id}')
->post()
->action('\OCA\Documents\UserController', 'disconnectGuest')
;
$this->create('documents_user_invite', 'ajax/user/invite')
->post()
->action('\OCA\Documents\UserController', 'invite')

@ -6,6 +6,8 @@ var documentsMain = {
isEditormode : false,
useUnstable : false,
isGuest : false,
memberId : false,
esId : false,
ready :false,
UI : {
@ -163,14 +165,15 @@ var documentsMain = {
response.permissions & OC.PERMISSION_SHARE && !documentsMain.isGuest
);
var serverFactory = new ServerFactory();
documentsMain.esId = response.es_id;
documentsMain.memberId = response.member_id;
var memberId = response.member_id;
documentsMain.webodfServerInstance = serverFactory.createServer();
documentsMain.webodfServerInstance.setToken(oc_requesttoken);
documentsMain.webodfEditorInstance = new Editor({unstableFeaturesEnabled: documentsMain.useUnstable}, documentsMain.webodfServerInstance, serverFactory);
// load the document and get called back when it's live
documentsMain.webodfEditorInstance.openSession(response.es_id, memberId, function() {
documentsMain.webodfEditorInstance.openSession(documentsMain.esId, documentsMain.memberId, function() {
documentsMain.webodfEditorInstance.startEditing();
documentsMain.UI.hideOverlay();
parent.location.hash = response.file_id;
@ -256,6 +259,15 @@ var documentsMain = {
$('header,footer').show();
}
documentsMain.webodfEditorInstance.destroy(documentsMain.UI.hideEditor);
if (documentsMain.isGuest){
var url = OC.Router.generate('documents_user_disconnectGuest');
} else {
var url = OC.Router.generate('documents_user_disconnect');
}
$.post(url + '/' + documentsMain.memberId, {esId: documentsMain.esId});
documentsMain.show();
// });
});

@ -80,7 +80,7 @@ class Db_Member extends Db{
* Update members to inactive state
* @param array $memberIds
*/
protected function deactivate($memberIds){
public function deactivate($memberIds){
$stmt = $this->buildInQuery('member_id', $memberIds);
array_unshift($memberIds, self::MEMBER_STATUS_INACTIVE);
$this->execute('

Loading…
Cancel
Save