|
@@ -52,7 +52,7 @@ class Forum extends Page
|
|
if ($user->isGuest) {
|
|
if ($user->isGuest) {
|
|
$sql = 'SELECT f.moderators, f.num_topics, f.sort_by, 0 AS is_subscribed FROM ::forums AS f WHERE f.id=?i:fid';
|
|
$sql = 'SELECT f.moderators, f.num_topics, f.sort_by, 0 AS is_subscribed FROM ::forums AS f WHERE f.id=?i:fid';
|
|
} else {
|
|
} else {
|
|
- $sql = 'SELECT f.moderators, f.num_topics, f.sort_by, s.user_id AS is_subscribed, mof.mf_last_visit, mof.mf_mark_all_read FROM ::forums AS f LEFT JOIN ::forum_subscriptions AS s ON (f.id=s.forum_id AND s.user_id=?i:uid) LEFT JOIN ::mark_of_forum AS mof ON (mof.uid=?i:uid AND f.id=mof.fid) WHERE f.id=?i:fid';
|
|
|
|
|
|
+ $sql = 'SELECT f.moderators, f.num_topics, f.sort_by, s.user_id AS is_subscribed, mof.mf_mark_all_read FROM ::forums AS f LEFT JOIN ::forum_subscriptions AS s ON (f.id=s.forum_id AND s.user_id=?i:uid) LEFT JOIN ::mark_of_forum AS mof ON (mof.uid=?i:uid AND f.id=mof.fid) WHERE f.id=?i:fid';
|
|
}
|
|
}
|
|
$curForum = $this->c->DB->query($sql, $vars)->fetch();
|
|
$curForum = $this->c->DB->query($sql, $vars)->fetch();
|
|
|
|
|
|
@@ -131,7 +131,6 @@ class Forum extends Page
|
|
}
|
|
}
|
|
$topics = $this->c->DB->query($sql, $vars)->fetchAll();
|
|
$topics = $this->c->DB->query($sql, $vars)->fetchAll();
|
|
|
|
|
|
- $maxTime = 0;
|
|
|
|
foreach ($topics as &$cur) {
|
|
foreach ($topics as &$cur) {
|
|
// цензура
|
|
// цензура
|
|
if ($this->config['o_censoring'] == '1') {
|
|
if ($this->config['o_censoring'] == '1') {
|
|
@@ -168,14 +167,13 @@ class Forum extends Page
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
// новые сообщения
|
|
// новые сообщения
|
|
- if ($time > max($upper, $cur['mt_last_visit'])) {
|
|
|
|
|
|
+ if ($time > max($upper, (int) $cur['mt_last_visit'])) {
|
|
$cur['link_new'] = $this->c->Router->link('TopicGoToNew', ['id' => $cur['id']]);
|
|
$cur['link_new'] = $this->c->Router->link('TopicGoToNew', ['id' => $cur['id']]);
|
|
- $maxTime = max($maxTime, $time);
|
|
|
|
} else {
|
|
} else {
|
|
$cur['link_new'] = null;
|
|
$cur['link_new'] = null;
|
|
}
|
|
}
|
|
// не прочитанные сообщения
|
|
// не прочитанные сообщения
|
|
- if ($time > max($lower, $cur['mt_last_read'])) {
|
|
|
|
|
|
+ if ($time > max($lower, (int) $cur['mt_last_read'])) {
|
|
$cur['link_unread'] = $this->c->Router->link('TopicGoToUnread', ['id' => $cur['id']]);
|
|
$cur['link_unread'] = $this->c->Router->link('TopicGoToUnread', ['id' => $cur['id']]);
|
|
} else {
|
|
} else {
|
|
$cur['link_unread'] = null;
|
|
$cur['link_unread'] = null;
|
|
@@ -184,20 +182,6 @@ class Forum extends Page
|
|
$cur['dot'] = isset($dots[$cur['id']]);
|
|
$cur['dot'] = isset($dots[$cur['id']]);
|
|
}
|
|
}
|
|
unset($cur);
|
|
unset($cur);
|
|
-
|
|
|
|
- // изменение времени последнего посещения
|
|
|
|
- if ($maxTime > (int) $curForum['mf_last_visit']) {
|
|
|
|
- $vars = [
|
|
|
|
- ':fid' => $args['id'],
|
|
|
|
- ':uid' => $user->id,
|
|
|
|
- ':tm' => $maxTime,
|
|
|
|
- ];
|
|
|
|
- if (empty($curForum['mf_last_visit']) && empty($curForum['mf_mark_all_read'])) {
|
|
|
|
- $this->c->DB->exec('INSERT INTO ::mark_of_forum (uid, fid, mf_last_visit) SELECT ?i:uid, ?i:fid, ?i:tm FROM ::groups WHERE NOT EXISTS (SELECT 1 FROM ::mark_of_forum WHERE uid=?i:uid AND fid=?i:fid) LIMIT 1', $vars);
|
|
|
|
- } else {
|
|
|
|
- $this->c->DB->exec('UPDATE ::mark_of_forum SET mf_last_visit=?i:tm WHERE uid=?i:uid AND fid=?i:fid', $vars);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$moders = empty($curForum['moderators']) ? [] : array_flip(unserialize($curForum['moderators']));
|
|
$moders = empty($curForum['moderators']) ? [] : array_flip(unserialize($curForum['moderators']));
|