1 頁 (共 1 頁)

發現一個2.0.18 在 posting.php 的 bug

發表於 : 2005-12-21 13:12
bluejeff
不清楚有沒有人和我一樣狀況, 剛剛去phpbb看了一下, 好像沒有人回報這個問題.

裝完2.0.18之後, 發現無法建立投票\r
正確的說應該是無法把已經打好的投票給keep在同一個page

經過測試之後, 發現2.0.18的更新說明是錯誤的. 在posting.php, 原本的2.0.18是:

Find:

代碼: 選擇全部

$refresh = $preview || 
After, Add:

代碼: 選擇全部

$orig_word = $replacement_word = array();
這個是錯誤的, 原本的那一句的refresh功能就會被切掉了.

我想應該是:
Find:

代碼: 選擇全部

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
After, Add:

代碼: 選擇全部

$orig_word = $replacement_word = array();
這樣子就解決問題了 :)
希望我修的是正確的.

發表於 : 2005-12-21 13:17
小竹子
http://phpbb-tw.net/phpbb/viewtopic.php?t=40996

經過測試好像沒問題耶! :oops:

發表於 : 2005-12-21 13:34
bluejeff
因為原來的程式碼是:

代碼: 選擇全部

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
如果依照原本的方法修改的話會變成:

代碼: 選擇全部

$refresh = $preview || $orig_word = $replacement_word = array();
$poll_add || $poll_edit || $poll_delete;
那樣子的話refresh就會被切斷, 當進行投票的時候會變成無法增加選項(因為無法更新)

基本上是2.0.18的小錯誤, 只要注意一下就OK. 小竹子大概是下意識的修對了 :) 只要是常碰程式的人都應該可以避免這個小bug. :)

依照上面我講的修法修改的話應該是會變成:

代碼: 選擇全部

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
$orig_word = $replacement_word = array();
也就是說, 要增加那句的那句應該是在原本句的之後, 而不是在中間把原本句給切了

發表於 : 2005-12-21 13:40
小竹子
竹貓因為沒安裝外掛,通常更新都是直接覆蓋檔案進行升級,所以比較沒有修改上的問題 :oops:

發表於 : 2005-12-21 13:45
bluejeff
阿, 真好, 那樣子就不會錯了.
有裝外掛就只能一句一句慢慢改的說, 唉~ :(

這個小bug小竹子可以去回報給phpbb.com的管理者嗎?

發表於 : 2005-12-21 14:05
小竹子
我先檢查一下,因為當時 2.0.18 有釋出過兩次,不知道是不是之前有修正過!

發表於 : 2005-12-21 14:13
動機不明
這個其實算是作者蠻偷懶的寫法...
可能是怕有些人安裝過其他外掛所以該行會有變更,因此才用開頭一段來代表...

前幾天我安裝生日外掛的時候也發現一樣的寫法,沒有一點修改經驗的人看了一定會狀況連連的 ^^"

例如

代碼: 選擇全部

#
#-----[ FIND ]------------------------------------------------
#
'OCCUPATION' =>
'INTERESTS' =>

#
#-----[ AFTER, ADD ]------------------------------------------
#

// Start add - Birthday MOD
		'S_BIRTHDAY' => $s_birthday,
		'BIRTHDAY_REQUIRED' => ($board_config['birthday_required']) ? '*' : '',
// End add - Birthday MOD

#
#-----[ FIND ]------------------------------------------------
#
'L_INTERESTS' =>

#
#-----[ AFTER, ADD ]------------------------------------------
#

// Start add - Birthday MOD
		'L_BIRTHDAY' => $lang['Birthday'],
// End add - Birthday MOD

發表於 : 2005-12-21 20:06
Mac
bluejeff 寫:因為原來的程式碼是:

代碼: 選擇全部

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
如果依照原本的方法修改的話會變成:

代碼: 選擇全部

$refresh = $preview || $orig_word = $replacement_word = array();
$poll_add || $poll_edit || $poll_delete;
那樣子的話refresh就會被切斷, 當進行投票的時候會變成無法增加選項(因為無法更新)

基本上是2.0.18的小錯誤, 只要注意一下就OK. 小竹子大概是下意識的修對了 :) 只要是常碰程式的人都應該可以避免這個小bug. :)

依照上面我講的修法修改的話應該是會變成:

代碼: 選擇全部

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
$orig_word = $replacement_word = array();
也就是說, 要增加那句的那句應該是在原本句的之後, 而不是在中間把原本句給切了
你誤會了 AFTER, ADD 的意思了。AFTER, ADD 和 IN-LINE AFTER, ADD 是不一樣的指令\r

~Mac

發表於 : 2005-12-21 21:12
過山雲
請問
那這樣到底有沒有問題呢?
謝謝。

發表於 : 2005-12-21 21:34
Mac
過山雲 寫:請問
那這樣到底有沒有問題呢?
謝謝。
關於外掛指令的寫法,目前官方的外掛小組是較為建議使用所謂的 Partial Match(部分比對),因為這樣子寫,在碰到已因為安裝外掛而修改的程式碼時,比較能有較少的衝突。

以原先提出來的程式碼為例,不管 "$refresh = $preview ||" 之後做了何種修正,都可以在找到那一行之後(AFTER, ADD = 之下)加上新的修正。

~Mac

發表於 : 2005-12-22 11:04
DL
要是你用asymod來裝的話,你會發覺安裝生日外掛及2.0.18的更新都沒有問題。