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
]
);
$page = WikiPage::find($page_id);
if ($page && $page->isEditable()) {
if (
$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']
if ($page) {
if ($page->isEditable()) {
if (
$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->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();
}
$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;
if (!$online) {
$online = WikiOnlineEditingUser::build($onlineData);
}
} else {
if ($pageInfo['wiki_editor_status']['focussed'] == $page_id) {
$online->editing = 1;
} else {
$other_users = WikiOnlineEditingUser::countBySql("`page_id` = ? AND `user_id` != ?", [
$editingUsers = WikiOnlineEditingUser::countBySQL(
"`page_id` = ? AND `editing` = 1 AND `user_id` != ?",
[$page->id, $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,
$user->id,
]);
if ($other_users === 0) {
// if I'm the only user I don't need to lose the edit mode
if ($other_requests === 0) {
$online->editing_request = 0;
$online->editing = 1;
}
} else {
if ($pageInfo['wiki_editor_status']['focussed'] == $page_id) {
$online->editing = 1;
} 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();
$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;
$data['pages'][$page_id]['chdate'] = $page->chdate;
$data['users'][$page_id] = $page->getOnlineUsers();
}
$data['pages'][$page_id]['chdate'] = $page->chdate;
$data['users'][$page_id] = $page->getOnlineUsers();
}
}
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