Как ограничить отправку сообщений на форуме по времени от последнего сообщения, хотя бы несколько секунд поставить. Например, как это сделано при отправке личных сообщений.
Как ограничить отправку сообщений на форуме по времени от последнего сообщения, хотя бы несколько секунд поставить. Например, как это сделано при отправке личных сообщений. |
Можно попробовать применить модификацию в ... файле, поменяв этот код:
/** * post reply * @param $p_post array */ function postReplyXML (&$p) { $f = $this->fdb->getForum ((int)$p['forum_id']);
$t = $this->fdb->getTopic ((int)$p['topic_id']);
if (!$this->_checkUserPerm ('', $f['forum_type'], 'post', (int)$p['forum_id']) || $t['topic_locked'] || bx_is_spam($p['topic_text'])) { return <<<EOF <html> <body> <script language="javascript" type="text/javascript"> window.parent.document.f.accessDenied(); </script> </body> </html> EOF; }
на этот:
/** * post reply * @param $p_post array */ function postReplyXML (&$p) { $f = $this->fdb->getForum ((int)$p['forum_id']);
$t = $this->fdb->getTopic ((int)$p['topic_id']); $user = $this->_getLoginUserName (); $t2 = $this->fdb->getTopicPost ((int)$p['topic_id']); if (($t2['user'] == $user && (time() - $t2['when2']) < 60) || !$this->_checkUserPerm ('', $f['forum_type'], 'post', (int)$p['forum_id']) || $t['topic_locked'] || bx_is_spam($p['topic_text'])) { return <<<EOF <html> <body> <script language="javascript" type="text/javascript"> window.parent.document.f.accessDenied(); </script> </body> </html> EOF; } Это не позволит пользователю писать в одну и ту-же тему в течение 60 сек. После применения модификации нужно перекомпилировать все языки для всех темплейтов форума. Rules → http://www.boonex.com/terms |
Спасибо. Еще бы ограничить, так же, создание новых тем. |
Спасибо. Еще бы ограничить, так же, создание новых тем. Нужно поменять: return $this->getRow ("SELECT `posts`, DATE_FORMAT(FROM_UNIXTIME(`user_last_post`),'{$gConf['date_format']}') AS `user_last_post` FROM " . TF_FORUM_USER_STAT . " WHERE `user` = '$u'"); на: return $this->getRow ("SELECT `posts`, DATE_FORMAT(FROM_UNIXTIME(`user_last_post`),'{$gConf['date_format']}') AS `user_last_post`, `user_last_post` AS `user_last_post_ts` FROM " . TF_FORUM_USER_STAT . " WHERE `user` = '$u'"); В файле DbForum.php Затем поменять этот код: function postNewTopicXML ($p) { $f = $this->fdb->getForum ((int)$p['forum_id']);
if (!$this->_checkUserPerm ('', $f['forum_type'], 'post', (int)$p['forum_id']) || bx_is_spam($p['topic_text'])) { return <<<EOF <html> <body> <script language="javascript" type="text/javascript">
if (window.parent.document.getElementById('tinyEditor')) window.parent.tinyMCE.execCommand('mceRemoveControl', false, 'tinyEditor');
window.parent.document.f.accessDenied();
</script> </body> </html> EOF; }
на этот:
function postNewTopicXML ($p) { $f = $this->fdb->getForum ((int)$p['forum_id']); $user = $this->_getLoginUserName (); $stat = $this->fdb->getUserStat ($user); if (!$this->_checkUserPerm ('', $f['forum_type'], 'post', (int)$p['forum_id']) || bx_is_spam($p['topic_text']) || (time() - $stat['user_last_post_ts']) < 60)) { return <<<EOF <html> <body> <script language="javascript" type="text/javascript">
if (window.parent.document.getElementById('tinyEditor')) window.parent.tinyMCE.execCommand('mceRemoveControl', false, 'tinyEditor');
window.parent.document.f.accessDenied();
</script> </body> </html> EOF; } в файле Forum.php Rules → http://www.boonex.com/terms |