aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/jsupdater.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/jsupdater.php')
-rw-r--r--app/controllers/jsupdater.php114
1 files changed, 60 insertions, 54 deletions
diff --git a/app/controllers/jsupdater.php b/app/controllers/jsupdater.php
index eb6032d..a5425f9 100644
--- a/app/controllers/jsupdater.php
+++ b/app/controllers/jsupdater.php
@@ -290,71 +290,77 @@ 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']
+ );
+ if ($page->isDirty()) {
+ $page['user_id'] = User::findCurrent()->id;
+ $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;