Disconnect user on leaving a session. Closes #15
This commit is contained in:
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…
x
Reference in New Issue
Block a user