время между отправкой сообщений на форуме

Как ограничить отправку сообщений на форуме по времени от последнего сообщения, хотя бы несколько секунд поставить. Например, как это сделано при отправке личных сообщений.

Quote · 24 May 2012

Можно попробовать применить модификацию в ... файле, поменяв этот код:


 

/**

* 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
Quote · 29 May 2012

Спасибо. Еще бы ограничить, так же, создание новых тем.

Quote · 29 May 2012

 

Спасибо. Еще бы ограничить, так же, создание новых тем.

Нужно поменять:

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
Quote · 30 May 2012
 
 
Below is the legacy version of the Boonex site, maintained for Dolphin.Pro 7.x support.
The new Dolphin solution is powered by UNA Community Management System.