關於動機的問題, 個人倒是覺得$sql 用舊的去改就好了
意即將這行(註:以動機所提供的壓縮檔內容為主)
代碼: 選擇全部
$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote, enable_auto_lock) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote, $enable_auto_lock)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . ", enable_auto_lock = " . $enable_auto_lock ." WHERE topic_id = $topic_id";
改回原本的(就是上面被#註解起來的那一行)
$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote, enable_auto_lock) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, $topic_status, $topic_type, $topic_vote, $enable_auto_lock)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type, topic_status = $topic_status " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . ", enable_auto_lock = " . $enable_auto_lock ."" . $topic_status . " WHERE topic_id = $topic_id";
然後再把紅字的部份拿掉
因為在裝author_reply的mod時, 就已經有加上topic_status = $topic_status(藍色那行
而當回覆達上限時自動鎖定主題也會插入 $topic_status的敘述, 所以會出現錯誤
上述的改完後, 還要再把這行
代碼: 選擇全部
$topic_status = ', topic_status = ' . TOPIC_LOCKED;
改成
代碼: 選擇全部
$topic_status = TOPIC_LOCKED;
不然在update 的 sql語法裡會出錯\r
再來就是這二段判斷式的先後問題了
代碼: 選擇全部
if (!empty($enable_auto_lock))
{
$topic_status = ', topic_status = ' . TOPIC_LOCKED;
}
$topic_status = ( $disallow_replies ) ? TOPIC_AUTHOR_REPLY : TOPIC_UNLOCKED;
這樣子的話, 如果啟用author_reply, 且有設定回覆多少篇後自動鎖定主題
那麼當回覆達到上限時並不會自動鎖定主題, 而是發文者及板主與admin有權回覆
若是調換二段程式碼的前後順序, 則上述狀況會變成回覆達上限時自動鎖定主題, 發文者也無法再回覆
這個就看個人的偏好了, 沒有一定的標準改法
以上