Simba, О ты на гит какие то изменения выложил![]()
Так как в таблице cms_forum_rdm есть уник key, там можно поубирать кое какие запросы, например
В index.php (+/-)
// Фиксация факта прочтения Топика
if ($systemUser->isValid() && $show_type == 'topic') {
$db->query("INSERT INTO `cms_forum_rdm` (topic_id, user_id, `time`)
VALUES ('$id', '" . $systemUser->id . "', '" . time() . "')
ON DUPLICATE KEY UPDATE `time` = VALUES(`time`)
");
//$req_r = $db->query("SELECT * FROM `cms_forum_rdm` WHERE `topic_id` = '$id' AND `user_id` = '" . $systemUser->id . "' LIMIT 1");
//
//if ($req_r->rowCount()) {
// $res_r = $req_r->fetch();
//
// if ($type1['last_post_date'] > $res_r['time']) {
// $db->exec("UPDATE `cms_forum_rdm` SET `time` = '" . time() . "' WHERE `topic_id` = '$id' AND `user_id` = '" . $systemUser->id . "' LIMIT 1");
// }
//} else {
// $db->exec("INSERT INTO `cms_forum_rdm` SET `topic_id` = '$id', `user_id` = '" . $systemUser->id . "', `time` = '" . time() . "'");
//}
}В nt.php (+/-)
// Ставим метку о прочтении
$db->query("INSERT INTO `cms_forum_rdm` (topic_id, user_id, `time`)
VALUES ('$rid', '" . $systemUser->id . "', '" . time() . "')
ON DUPLICATE KEY UPDATE `time` = VALUES(`time`)
");
//$db->exec("INSERT INTO `cms_forum_rdm` SET
// `topic_id`='$rid',
// `user_id`='" . $systemUser->id . "',
// `time`='" . time() . "'
//");И в new.php (+/-)
// Отмечаем все темы как прочитанные
$ids = $db->query("SELECT `forum_topic`.`id`, `forum_topic`.`last_post_date`
FROM `forum_topic` LEFT JOIN `cms_forum_rdm` ON `forum_topic`.`id` = `cms_forum_rdm`.`topic_id` AND `cms_forum_rdm`.`user_id` = '" . $systemUser->id . "'
WHERE `forum_topic`.`last_post_date` > `cms_forum_rdm`.`time` OR `cms_forum_rdm`.`topic_id` IS NULL")->fetchAll(PDO::FETCH_ASSOC);
foreach ($ids as $val) {
$values[] = '(' . $val['id'] . ', ' . $systemUser->id . ', ' . $val['last_post_date'] . ')';
}
$db->query('INSERT INTO cms_forum_rdm (topic_id, user_id, `time`) VALUES ' . implode(',', $values) . '
ON DUPLICATE KEY UPDATE `time` = VALUES(`time`)');
//$db->exec("INSERT INTO `cms_forum_rdm` (`topic_id`, `user_id`, `time`)
//SELECT `forum_topic`.`id`, '" . $systemUser->id . "', '" . time() . "'
//FROM `forum_topic` LEFT JOIN `cms_forum_rdm` ON `forum_topic`.`id` = `cms_forum_rdm`.`topic_id` AND `cms_forum_rdm`.`user_id` = '" . $systemUser->id . "'
//WHERE `cms_forum_rdm`.`topic_id` IS NULL");
//
//$ids = $db->query("SELECT `forum_topic`.`id`
//FROM `forum_topic` LEFT JOIN `cms_forum_rdm` ON `forum_topic`.`id` = `cms_forum_rdm`.`topic_id` AND `cms_forum_rdm`.`user_id` = '" . $systemUser->id . "'
//WHERE `forum_topic`.`last_post_date` > `cms_forum_rdm`.`time`")->fetchAll(PDO::FETCH_COLUMN);
//
//if (!empty($ids)) {
// $db->exec("UPDATE `cms_forum_rdm` SET
// `time` = '" . time() . "'
// WHERE `topic_id` IN (" . implode(',', $ids) . ") AND `user_id` = '" . $systemUser->id . "'
// ");
//}