修改 "自動鎖定主題" 的方法

與 phpBB 3.0.x 相關主題。

版主: 版主管理群

回覆文章
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

修改 "自動鎖定主題" 的方法

文章 心靈捕手 »

前言:
如果您希望論壇中的主題, 超過一定的時間沒有回覆時, 會自動鎖定, 那麼您可以試試這個修改方法.

方法:
--開啟--
posting.php

--找到--

代碼: 選擇全部

$current_time = time();
--之後增加--

代碼: 選擇全部

    //自動鎖定開始
    //回覆文章時, 檢查主題的最後發表文章之時間 (管理員及版主不受影響)
    if (($mode == 'reply' || $mode == 'quote') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
    {
        //選取最後發表文章之時間, 主題
        $sql = 'SELECT topic_last_post_time, topic_title
            FROM ' . TOPICS_TABLE . '
            WHERE topic_id = ' . $topic_id;
               
        $result = $db->sql_query_limit($sql, 1);
          
        if ($row = $db->sql_fetchrow($result))
        {
            $topic_age = $row['topic_last_post_time'];
            $topic_title = $row['topic_title'];
        }
        $db->sql_freeresult($result);
        
        //假如最後發表文章之時間超過 1 天, 那麼自動鎖定
        if ((time() - $topic_age) > 86400)
        {
            //鎖定主題, 並給予錯誤警告
            $sql = 'UPDATE ' . TOPICS_TABLE . "
                SET topic_status = 1
                WHERE topic_id = $topic_id";
            $db->sql_query($sql);
            
            add_log('mod', $forum_id, $topic_id, 'LOG_' . 'LOCK', $topic_title);
            trigger_error('抱歉! 這個主題因為超過 1 天沒有人回覆, 所以已經被鎖定.');
        }
    }
    //自動鎖定結束
--儲存與結束--
P.S.
檔案必須儲存為 UTF-8 (未含 BOM) 格式.

後記:
1. 如果只要指定某些版面有此自動鎖定主題的功能, 那麼可以增加一些代碼, 包住上頭所新增者:

代碼: 選擇全部

//只有版面 ID = 5, 55 以及 555 有自動鎖定主題功能
$excluded_forum_ids = array(5,55,555);
if (in_array($forum_id, $excluded_forum_ids))
{
    //自動鎖定開始
    (以下省略)
    //自動鎖定結束
}
P.S.
請將版面 ID (5,55,555) 取代成您所要指定者, 以半形逗點分隔.

2. 您可自行依需求, 修改最後發表文章之時間超過的天數, 如下:
  • 1 天 = 86400 (秒)
  • 7 天 = 86400*7 = 604800 (秒)
  • 30 天 = 86400*30 = 2592000 (秒)
P.S.
記得一併修改 trigger_error() 當中的說明文字.

--
參考資料:
http://www.phpbb.com/community/viewtopi ... 2&t=845135
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
回覆文章

回到「3.0」