Skip to content
Snippets Groups Projects
Commit 0858b8d8 authored by David Siegfried's avatar David Siegfried Committed by Jan-Hendrik Willms
Browse files

fixes #3950

Closes #3950

Merge request studip/studip!2808
parent 0ef2e307
No related branches found
No related tags found
No related merge requests found
...@@ -290,71 +290,74 @@ class JsupdaterController extends AuthenticatedController ...@@ -290,71 +290,74 @@ class JsupdaterController extends AuthenticatedController
] ]
); );
$page = WikiPage::find($page_id); $page = WikiPage::find($page_id);
if ($page && $page->isEditable()) { if ($page) {
if ( if ($page->isEditable()) {
$pageInfo['wiki_editor_status']['focussed'] == $page_id if (
&& !empty($pageInfo['wiki_editor_status']['page_content']) $pageInfo['wiki_editor_status']['focussed'] == $page_id
) { && !empty($pageInfo['wiki_editor_status']['page_content'])
$page->content = \Studip\Markup::markAsHtml( ) {
$pageInfo['wiki_editor_status']['page_content'] $page->content = \Studip\Markup::markAsHtml(
$pageInfo['wiki_editor_status']['page_content']
);
$page->store();
}
$onlineData = [
'user_id' => $user->id,
'page_id' => $page_id
];
$online = WikiOnlineEditingUser::findOneBySQL(
"`user_id` = :user_id AND `page_id` = :page_id",
$onlineData
); );
$page->store(); if (!$online) {
} $online = WikiOnlineEditingUser::build($onlineData);
$onlineData = [
'user_id' => $user->id,
'page_id' => $page_id
];
$online = WikiOnlineEditingUser::findOneBySQL(
"`user_id` = :user_id AND `page_id` = :page_id",
$onlineData
);
if (!$online) {
$online = WikiOnlineEditingUser::build($onlineData);
}
$editingUsers = WikiOnlineEditingUser::countBySQL(
"`page_id` = ? AND `editing` = 1 AND `user_id` != ?",
[$page->id, $user->id]
);
if ($editingUsers > 0) {
$online->editing = 0;
} elseif ($online->editing && $online->editing_request) {
// this is the mode that this user requested the editing mode and was granted to get it:
$online->editing_request = 0;
} elseif ($online->editing_request) {
$other_requests = WikiOnlineEditingUser::countBySql("`page_id` = ? AND `editing_request` = 1 AND `user_id` != ?", [
$page->id,
$user->id,
]);
if ($other_requests === 0) {
$online->editing_request = 0;
$online->editing = 1;
} }
} else { $editingUsers = WikiOnlineEditingUser::countBySQL(
if ($pageInfo['wiki_editor_status']['focussed'] == $page_id) { "`page_id` = ? AND `editing` = 1 AND `user_id` != ?",
$online->editing = 1; [$page->id, $user->id]
} else { );
$other_users = WikiOnlineEditingUser::countBySql("`page_id` = ? AND `user_id` != ?", [ if ($editingUsers > 0) {
$online->editing = 0;
} else if ($online->editing && $online->editing_request) {
// this is the mode that this user requested the editing mode and was granted to get it:
$online->editing_request = 0;
} else if ($online->editing_request) {
$other_requests = WikiOnlineEditingUser::countBySql("`page_id` = ? AND `editing_request` = 1 AND `user_id` != ?", [
$page->id, $page->id,
$user->id, $user->id,
]); ]);
if ($other_users === 0) { if ($other_requests === 0) {
// if I'm the only user I don't need to lose the edit mode $online->editing_request = 0;
$online->editing = 1;
}
} else {
if ($pageInfo['wiki_editor_status']['focussed'] == $page_id) {
$online->editing = 1; $online->editing = 1;
} else { } else {
$online->editing = 0; $other_users = WikiOnlineEditingUser::countBySql("`page_id` = ? AND `user_id` != ?", [
$page->id,
$user->id,
]);
if ($other_users === 0) {
// if I'm the only user I don't need to lose the edit mode
$online->editing = 1;
} else {
$online->editing = 0;
}
} }
} }
$online->chdate = time();
$online->store();
$data['contents'][$page_id] = wikiReady($page->content, true, $page->range_id, $page_id);
$data['wysiwyg_contents'][$page_id] = $page->content;
$data['pages'][$page_id]['editing'] = $online->editing;
}
else {
$data['pages'][$page_id]['editing'] = 0;
} }
$online->chdate = time(); $data['pages'][$page_id]['chdate'] = $page->chdate;
$online->store(); $data['users'][$page_id] = $page->getOnlineUsers();
$data['contents'][$page_id] = wikiReady($page->content, true, $page->range_id, $page_id);
$data['wysiwyg_contents'][$page_id] = $page->content;
$data['pages'][$page_id]['editing'] = $online->editing;
} else {
$data['pages'][$page_id]['editing'] = 0;
} }
$data['pages'][$page_id]['chdate'] = $page->chdate;
$data['users'][$page_id] = $page->getOnlineUsers();
} }
} }
return $data; return $data;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment