痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 5838|回復: 28

技術板區發表主題強制附圖的解決方案?!

[複製鏈接]
發表於 2015-12-27 22:19:53 | 顯示全部樓層 |閱讀模式
本文章最後由 moripi 於 2015-12-27 10:58 PM 編輯

各位版大及先進們好~
近來想必各版大及壇友們, 對於技術區發表主題如何強制附圖的問題給傷透了腦筋...{:14_1489:}

因為魔誤交損友(誤) jojoling大, 他挖了一個洞給魔跳...{:14_1477:}{:14_1483:}
其實是私下和 jojoling 大討論時, 他給魔一個方向也建議魔來做看看~

於是...今天就來發表一下, 可以從最根本的論壇系統下手來解決的方案...

但這個方案主要會更動到 Discuz! X3.2 版的原始碼...
本來和 jojoling 大的討論是希望能有更完善的解決方式,
例如: plugin/hook 等, 能由後台來控制...

但因魔近期又有新案子要趕了, 所以先研究到此...
讓論壇能先頂著用為基準...(wish大如果有採用的話)
待案子完成後再找時間完善~

好了~癈話不多說, 來看看如何讓論壇在發表主題時, 讓系統自動檢查是否有附圖~
依例先上圖展示一下效果~

▼快速發表未附圖提示

快速發表

快速發表


▼進階發表未附圖提示

進階發表

進階發表



▼手機版發表未附圖提示

行動版發表

行動版發表



▼觸屏版發表未附圖提示

觸屏版發表

觸屏版發表



======================[ 我是分隔線 ] ======================

這個方案主要會更動到的系統原始碼有5支
  • .\static\js\common.js
  • .\static\js\forum.js
  • .\static\js\forum_post.js
  • .\source\language\lang_message.php
  • .\source\class\model\model_forum_thread.php

檢查附圖的規則
  • 上傳附圖檔
  • 從論壇引用已存在的圖片

各檔案的修改如下
.\static\js\common.js 打開此檔案後, 直接拉到最下面 2052行左右
  1. if(BROWSER.ie) {
  2.     document.documentElement.addBehavior("#default#userdata");
  3. }
複製代碼
在上述這段代碼前加入 BEGIN~END 的檢查函數, 加好後會看到如下的樣子
  1. /* BEGIN */
  2. function validateAttachedImage(text) {
  3.     var attachimg = /\[attachimg\]\d+\[\/attachimg\]|\[img\]http\:\/\/bbs\.pigoo\.com\/data\/attachment\/forum\/(.+)\.(jpe?g|png|gif|jpeg)\[\/img\]/g;
  4.     var matched = text.match(attachimg);
  5.     return matched ? matched.length : 0;
  6. }
  7. /* END */

  8. if(BROWSER.ie) {
  9.     document.documentElement.addBehavior("#default#userdata");
  10. }
複製代碼

.\static\js\forum.js 打開此檔案後, 大概在 212行會看到如下代碼
  1.     if(theform.message.value == '' || theform.subject.value == '') {
  2.         s = '抱歉,您尚未輸入標題或內容';
  3.         theform.message.focus();
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         s = '您的標題超過 80 個字符的限制';
  6.         theform.subject.focus();
  7.     }
複製代碼
在上述代碼之後加入 BEGIN~END 的代碼如下
  1.     if(theform.message.value == '' || theform.subject.value == '') {
  2.         s = '抱歉,您尚未輸入標題或內容';
  3.         theform.message.focus();
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         s = '您的標題超過 80 個字符的限制';
  6.         theform.subject.focus();
  7.     } /* BEGIN */ else if(validateAttachedImage(theform.message.value) == 0) {
  8.         s = '您的技術相關帖子應包含最少一張貼圖';
  9.         theform.message.focus();
  10.     } /* END */
複製代碼

.\static\js\forum_post.js 打開此檔案後, 大概在 75行會看到如下代碼
  1.     if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
  2.         showError('抱歉,您尚未輸入標題或內容');
  3.         return false;
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         showError('您的標題超過 80 個字符的限制');
  6.         return false;
  7.     }
複製代碼
在上述代碼之後加入 BEGIN~END 的代碼如下
  1.     if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
  2.         showError('抱歉,您尚未輸入標題或內容');
  3.         return false;
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         showError('您的標題超過 80 個字符的限制');
  6.         return false;
  7.     } /* BEGIN */ else if(validateAttachedImage(message) == 0) {
  8.         showError('您的技術相關帖子應包含最少一張貼圖');
  9.         return false;
  10.     } /* END */
複製代碼

.\source\language\lang_message.php 打開此檔案後, 直接拉到最下面 1076行左右
  1.   'noreply_voted_error' => '您已經對此回帖投過票了',
複製代碼
在上述代碼後加入新的 BEGIN~END  訊息 'post_img_isnull'

  1.   'noreply_voted_error' => '您已經對此回帖投過票了',
  2.   /* BEGIN */
  3.   'post_img_isnull' => '您的技術相關帖子應包含最少一張貼圖',
  4.   /* END */
複製代碼

.\source\class\model\model_forum_thread.php
打開此檔案後, 大概在 45行左右會看到如下代碼
  1.         if(trim($this->param['subject']) == '') {
  2.             return $this->showmessage('post_sm_isnull');
  3.         }

  4.         if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
  5.             return $this->showmessage('post_sm_isnull');
  6.         }
複製代碼
在上述代碼兩個 if 區段中間插入 BEGIN~END 代碼如下
  1.         if(trim($this->param['subject']) == '') {
  2.             return $this->showmessage('post_sm_isnull');
  3.         }

  4.         /* BEGIN */                                
  5.        $fai_forum = array(117, 134, 159, 136, 24, 135, 170, 197, 118, 229, 137, 112, 232, 169);
  6.         if(in_array($this->forum['fid'], $fai_forum) && preg_match_all("/\[attachimg\](\d+)\[\/attachimg\]|\[img\]http\:\/\/bbs\.pigoo\.com\/data\/attachment\/forum\/(.+)\.(jpe?g|png|gif|jpeg)\[\/img\]/",trim($this->param['message'])) == 0) {
  7.             return $this->showmessage('post_img_isnull');
  8.         }
  9.         /* END */

  10.         if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
  11.             return $this->showmessage('post_sm_isnull');
  12.         }
複製代碼
可以看到中間代碼有一串 array(117, 134, 159, 136, 24, 135, 170, 197, 118, 229, 137, 112, 232, 169)
那些數值就是目前論壇有強制附圖的所有技術性討論區FID~
如果有其他
非技術性討論區也要強制附圖的話, 將它的FID依格式往後加上即可~

======================[ 我還是分隔線 ] ======================

以上, 如有問題請提出討論~

感謝您的收看~下回見~



補充內容 (2015-12-28 04:22 PM):
14樓有新加入YouTube檢查樣本

補充內容 (2016-1-4 06:24 PM):
23樓整理出所有相關說明及修改代碼

評分

28

查看全部評分

發表於 2015-12-27 22:28:21 | 顯示全部樓層
干得好,給你加五分!n_092|
發表於 2015-12-27 23:12:12 | 顯示全部樓層
不管最後有沒有採用,我都該給你貢獻分。
謝謝你幫忙解決這個問題,這幾天我會改過來讓大家測試,改程式的麻煩是在當官方有補丁的時候可能會更動,也就是說當打一次補丁就得改一次,當然也有可能補丁打了之後我們的程式也要跟著修改,不過以上都是可以克服的。
再來就是改好了之後,應該是剩下像這種案例︰
http://bbs.pigoo.com/thread-59030-1-1.html

就是隨便找張圖搪塞。

看到你這一帖讓我心中流過一陣暖流,好像很久沒有這種感動了,讓我覺得不是只有我獨自撐著這個小論壇,謝謝moripi 跟jojoling 你們願意花費時間幫忙解決這個長久以來的問題。

評分

1

查看全部評分

發表於 2015-12-27 23:29:08 來自手機 | 顯示全部樓層
讚啦魔兄
發表於 2015-12-28 00:40:18 | 顯示全部樓層
想必魔大是js/php的高手!!
 樓主| 發表於 2015-12-28 01:06:22 | 顯示全部樓層
wish 發表於 2015-12-27 11:12 PM
不管最後有沒有採用,我都該給你貢獻分。
謝謝你幫忙解決這個問題,這幾天我會改過來讓大家測試,改程式的 ...

回wish大,

是的! 這個改法, 較麻煩的地方就是官方有修正版時, 就要檢查一次相關代碼是否有被動到...
不過就如wish大說的, 這些都是小問題...且魔這個小小修改, 要比對是非常簡單的~

這次在研究Discuz時, 其實發現它沒法完全以 plugin/hook 的方式來完美解決強制附圖的問題.
因為原始設計就沒有在相關地方嵌入可以被 plugin/hook 的地方...

就算未來魔有將 "設定強制附圖分區"  功能以 plugin 方式加入後台,
也無法不像這次以 Patch Code 方式來加強功能...

原因就在於原始設計就沒有這個功能的考量....

而就 wish 大指的另一種案列 "隨便找張圖搪塞" 這個, 這魔就真的完全無解...
可能還是需要麻煩版大們, 以人工審核的方式進行了...


wish 大能提供一個優質的學習交流環境, 魔相信大家都是能幫忙就幫忙的~
就以這次這個議題, 魔及 jojoling 大也是看到許多人提出許多建議...

所以才會試著研究看看, 畢竟魔對硬體不行...但軟體倒是還能幫上點小忙...
就算魔出師不利...背後還有一位軟硬都行的 jojoling大可以撐著呢~
 樓主| 發表於 2015-12-28 01:09:45 | 顯示全部樓層
peter180 發表於 2015-12-28 12:40 AM
想必魔大是js/php的高手!!

回petter大...

阿魔平時都只以C/C++為伍..., 這次也是第一次嘗試看 php...
好在 js 及 php 語法都是以 C 為參考而誕生的...魔看起來才不會那麼累一點..
 樓主| 發表於 2015-12-28 02:07:10 | 顯示全部樓層
cremaker 發表於 2015-12-27 10:28 PM
干得好,給你加五分!

感謝版大支持~
發表於 2015-12-28 11:09:24 | 顯示全部樓層
厲害的阿魔~
其實我只會動動嘴巴,拐人做事而以

評分

4

查看全部評分

發表於 2015-12-28 12:58:58 | 顯示全部樓層
jojoling 發表於 2015-12-28 11:09 AM
厲害的阿魔~
其實我只會動動嘴巴,拐人做事而以

這才是高人啊...
在公司坐最後一排最大位子的 (或是窩在獨立小房間的) 不都是專幹這檔事嗎...n_087|

評分

2

查看全部評分

 樓主| 發表於 2015-12-28 15:16:52 | 顯示全部樓層
jojoling 發表於 2015-12-28 11:09 AM
厲害的阿魔~
其實我只會動動嘴巴,拐人做事而以

魔也要開始想想有什麼洞可以挖來給jojo跳一下了:sam16~
發表於 2015-12-28 15:37:34 | 顯示全部樓層
moripi 發表於 2015-12-28 03:16 PM
魔也要開始想想有什麼洞可以挖來給jojo跳一下了~

貴魔多忘事~~
http://bbs.pigoo.com/thread-58357-1-1.html

評分

1

查看全部評分

 樓主| 發表於 2015-12-28 15:44:45 | 顯示全部樓層
jojoling 發表於 2015-12-28 03:37 PM
貴魔多忘事~~
http://bbs.pigoo.com/thread-58357-1-1.html

再多挖幾個給您跳~~:sam06
 樓主| 發表於 2015-12-28 16:20:09 | 顯示全部樓層
早上阿魔突然想到...
ciko大在發表教學文章時會直接引用 YouTube影片, 這規則中原本只針對貼圖做檢查而己...
所以魔再發個修正版上來...

這個版本更動了2支代碼檔, 加入了YouTube檢查樣本
  • .\static\js\common.js
  • .\source\class\model\model_forum_thread.php


.\static\js\common.js 打開此檔案後, 直接拉到最下面 2052行左右
  1. if(BROWSER.ie) {
  2.     document.documentElement.addBehavior("#default#userdata");
  3. }
複製代碼

在上述這段代碼前加入 BEGIN~END 的檢查函數, 加好後會看到如下的樣子
  1. /* BEGIN */
  2. function validateAttachedImage(text) {
  3.     var attachimg = /\[attachimg\]\d+\[\/attachimg\]|\[img\]http\:\/\/bbs\.pigoo\.com\/data\/attachment\/forum\/(.+)\.(jpe?g|png|gif)\[\/img\]|\[youtube\](.+)\[\/youtube]/g;
  4.     var matched = text.match(attachimg);
  5.     return matched ? matched.length : 0;
  6. }
  7. /* END */

  8. if(BROWSER.ie) {
  9.     document.documentElement.addBehavior("#default#userdata");
  10. }
複製代碼


.\source\class\model\model_forum_thread.php 打開此檔案後, 大概在 45行左右會看到如下代碼
  1.         if(trim($this->param['subject']) == '') {
  2.             return $this->showmessage('post_sm_isnull');
  3.         }

  4.         if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
  5.             return $this->showmessage('post_sm_isnull');
  6.         }
複製代碼

在上述代碼兩個 if 區段中間插入 BEGIN~END 代碼如下
  1.         if(trim($this->param['subject']) == '') {
  2.             return $this->showmessage('post_sm_isnull');
  3.         }

  4.         /* BEGIN */               
  5.         $fai_forum = array(117, 134, 159, 136, 24, 135, 170, 197, 118, 229, 137, 112, 232, 169);

  6.         $pattern = "/\[attachimg\](\d+)\[\/attachimg\]|\[img\]http\:\/\/bbs\.pigoo\.com\/data\/attachment\/forum\/(.+)\.(jpe?g|png|gif)\[\/img\]|\[youtube\](.+)\[\/youtube\]/";
  7.         if(in_array($this->forum['fid'], $fai_forum) && preg_match_all($pattern, trim($this->param['message'])) == 0) {
  8.             return $this->showmessage('post_img_isnull');
  9.         }
  10.         /* END */

  11.         if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
  12.             return $this->showmessage('post_sm_isnull');
  13.         }
複製代碼

評分

7

查看全部評分

 樓主| 發表於 2015-12-28 16:58:34 | 顯示全部樓層

感謝黑狗兄支持~
發表於 2015-12-28 19:33:53 | 顯示全部樓層
阿魔大 給你一個讚
好厲害!!
至少解決了第一個門檻
其它例外.......唉
無可就藥~~~
發表於 2015-12-29 09:11:57 | 顯示全部樓層
魔大大 真厲害,但是jojoling大可以挖洞讓魔大跳更厲害
發表於 2015-12-29 10:35:40 | 顯示全部樓層
原來都是潛藏的高手,終于出手了
 樓主| 發表於 2015-12-30 15:37:10 | 顯示全部樓層
sandy319 發表於 2015-12-28 07:33 PM
阿魔大 給你一個讚
好厲害!!
至少解決了第一個門檻

感謝支持~
例外就真的無解了~
 樓主| 發表於 2015-12-30 15:38:11 | 顯示全部樓層
candyliu 發表於 2015-12-29 09:11 AM
魔大大 真厲害,但是jojoling大可以挖洞讓魔大跳更厲害

阿魔和jojoling大互相挖洞給對方跳.....也算是一種強制對方學習的方式吧...{:14_1483:}
 樓主| 發表於 2015-12-30 15:43:42 | 顯示全部樓層
xiaolaba 發表於 2015-12-29 10:35 AM
原來都是潛藏的高手,終于出手了

高手魔不敢當啦~
只是搞不懂為何總有人無視版規...
拍個照再上傳也沒那麼難才對...
發表於 2015-12-30 20:45:16 | 顯示全部樓層
moripi 發表於 2015-12-28 04:20 PM
早上阿魔突然想到...
ciko大在發表教學文章時會直接引用 YouTube影片, 這規則中原本只針對貼圖做檢查而己.. ...

看來jojo老師的地位就快不保了n_027|
趁jojo老師在閉關時...趕快去挖洞n_044|
阿魔...挖洞.....記得挖深一點.....順便把他....n_112|
 樓主| 發表於 2016-1-4 18:21:02 | 顯示全部樓層
本文章最後由 moripi 於 2016-1-4 06:59 PM 編輯

自方案發表後, 由wish大移至正式主機後, 一直發生在魔的機器上無法重現的問題...
由於魔是在 Windows 下使用 PHP 5.5 測試開發的, 但正式主機是使用 CentOS 6.5 PHP 5.3.3,
其測試結果和魔在本機上完全不盡相同...真是搞得魔一個頭兩個大...
這問題是 PHP 5.3.3 的BUG造成的, 還好最後發現了解決方式...{:14_1489:}

也順便把相關代碼再次重新整理一遍, 好讓 Wish大要添加新版區時不用動到太多檔案,
(只要更動下列 JavaScript & PHP版版區 設定就可),
這次的跟帖, 就把所有相關的相關代碼再做一次整理貼出來, 也算是對這個階段做一個總結.


最新的方案己由原本 5支更動到7支代碼
  • .\static\js\common.js (JavaScript 版版區設定)
  • .\static\js\forum.js
  • .\static\js\forum_post.js
  • .\config\config_global.php (PHP 版版區設定)
  • .\source\language\lang_message.php
  • .\source\class\model\model_forum_thread.php
  • .\source\class\model\model_forum_post.php

檢查附圖的規則
  • 上傳附圖檔...[attachimg][/attachimg]
  • 從論壇引用已存在的圖片...[img(=w,h)][/img](己包含Ultraman大回報的己上傳圖片的拖曳方法)
  • Youtube 影片...
  • 未來如果網站啟用 TLS 的支援

各檔案的修改如下
.\static\js\common.js 打開此檔案後, 直接拉到最下面 2052行左右
  1. if(BROWSER.ie) {
  2.     document.documentElement.addBehavior("#default#userdata");
  3. }
複製代碼
在上述這段代碼前加入 BEGIN~END 的檢查函數, 加好後會看到如下的樣子
  1. /* BEGIN */
  2. function getParameterByName(name) {
  3.     name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
  4.     var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
  5.         results = regex.exec(location.search);
  6.     return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
  7. }

  8. var fai = [117, 134, 211, 212, 218, 159, 219, 220, 136,  24,
  9.             194, 195, 196, 225, 135, 148, 149, 150, 151, 152,
  10.             170, 197, 217, 118, 140, 141, 142, 229, 230, 231,
  11.             137, 112, 201, 226, 232, 169];

  12. function validateAttachedImage(text) {
  13.         if(in_array(getParameterByName('fid'), fai)) {
  14.                 var pattern = /\[attachimg\]\d+\[\/attachimg\]|\[(img|img=\d+,\d+)\](http|https)\:\/\/bbs\.pigoo\.com\/(.+)\.(jpe?g|png|gif)\[\/img\]|\[youtube\](.+)\[\/youtube]/img;
  15.                 var matched = text.match(pattern);
  16.                
  17.                 return matched ? matched.length > 0 : false;
  18.         }
  19.         
  20.         return true;
  21. }
  22. /* END */

  23. if(BROWSER.ie) {
  24.     document.documentElement.addBehavior("#default#userdata");
  25. }
複製代碼


.\static\js\forum.js 打開此檔案後, 大概在 212行會看到如下代碼
  1.     if(theform.message.value == '' || theform.subject.value == '') {
  2.         s = '抱歉,您尚未輸入標題或內容';
  3.         theform.message.focus();
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         s = '您的標題超過 80 個字符的限制';
  6.         theform.subject.focus();
  7.     }
複製代碼
在上述代碼之後加入 BEGIN~END 的代碼如下
  1.     if(theform.message.value == '' || theform.subject.value == '') {
  2.         s = '抱歉,您尚未輸入標題或內容';
  3.         theform.message.focus();
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         s = '您的標題超過 80 個字符的限制';
  6.         theform.subject.focus();
  7.     } /* BEGIN */ else if(!validateAttachedImage(theform.message.value)) {
  8.         s = '在本版區發帖,至少需附一張使用本論壇空間,且與內容相關的圖片.';
  9.         theform.message.focus();
  10.     } /* END */
複製代碼


.\static\js\forum_post.js 打開此檔案後, 大概在 75行會看到如下代碼
  1.     if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
  2.         showError('抱歉,您尚未輸入標題或內容');
  3.         return false;
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         showError('您的標題超過 80 個字符的限制');
  6.         return false;
  7.     }
複製代碼
在上述代碼之後加入 BEGIN~END 的代碼如下
  1.     if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
  2.         showError('抱歉,您尚未輸入標題或內容');
  3.         return false;
  4.     } else if(mb_strlen(theform.subject.value) > 80) {
  5.         showError('您的標題超過 80 個字符的限制');
  6.         return false;
  7.     } /* BEGIN */ else if(!validateAttachedImage(message)) {
  8.         showError('在本版區發帖,至少需附一張使用本論壇空間,且與內容相關的圖片.');
  9.         return false;
  10.     } /* END */
複製代碼


.\source\language\lang_message.php 打開此檔案後, 直接拉到最下面 1076行左右
  1.   'noreply_voted_error' => '您已經對此回帖投過票了',
複製代碼
在上述代碼後加入新的 BEGIN~END  訊息 'post_img_isnull'

  1.   'noreply_voted_error' => '您已經對此回帖投過票了',
  2.   /* BEGIN */
  3.   'post_img_isnull' => '在本版區發帖,至少需附一張使用本論壇空間,且與內容相關的圖片',
  4.   /* END */
複製代碼


.\source\config\config_global.php 打開此檔案後, 直接拉到最下面, 大概在 91行左右會看到如下代碼
  1. // --------------------------  CONFIG REMOTE  --------------------------- //
  2. $_config['remote']['on'] = '0';
  3. $_config['remote']['dir'] = 'remote';
  4. $_config['remote']['appkey'] = '62cf0b3c3e6a4c9468e7216839721d8e';
  5. $_config['remote']['cron'] = '0';
複製代碼
在上述代碼後插入 BEGIN~END 代碼如下
  1. // --------------------------  CONFIG REMOTE  --------------------------- //
  2. $_config['remote']['on'] = '0';
  3. $_config['remote']['dir'] = 'remote';
  4. $_config['remote']['appkey'] = '62cf0b3c3e6a4c9468e7216839721d8e';
  5. $_config['remote']['cron'] = '0';

  6. /* BEGIN */
  7. // ---------------------------  PIGOO RULES  --------------------------- //
  8. $_config['pigoo']['pattern'] = '/\[attachimg\](\d+)\[\/attachimg\]|\[(img|img=\d+,\d+)\](http|https)\:\/\/bbs\.pigoo\.com\/(.+)\.(jpe?g|png|gif)\[\/img\]|\[youtube\](.+)\[\/youtube\]/im';

  9. $_config['pigoo']['forums'] = array(117, 134, 211, 212, 218, 159, 219, 220, 136,  24,
  10.                                    194, 195, 196, 225, 135, 148, 149, 150, 151, 152,
  11.                                    170, 197, 217, 118, 140, 141, 142, 229, 230, 231,
  12.                                    137, 112, 201, 226, 232, 169);
  13. /* END */
複製代碼


.\source\class\model\model_forum_thread.php 打開此檔案後, 大概在 45行左右會看到如下代碼
  1.         if(trim($this->param['subject']) == '') {
  2.             return $this->showmessage('post_sm_isnull');
  3.         }

  4.         if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
  5.             return $this->showmessage('post_sm_isnull');
  6.         }
複製代碼
在上述代碼兩個 if 區段中間插入 BEGIN~END 代碼如下
  1.         if(trim($this->param['subject']) == '') {
  2.             return $this->showmessage('post_sm_isnull');
  3.         }

  4.         if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
  5.             return $this->showmessage('post_sm_isnull');
  6.         }
  7.         /* BEGIN */                                
  8.         if(in_array($this->forum['fid'], getglobal('config/pigoo/forums')) && preg_match(getglobal('config/pigoo/pattern'), $this->param['message']) == 0) {
  9.             return $this->showmessage('post_img_isnull');
  10.         }
  11.         /* END */
複製代碼


.\source\class\model\model_forum_post.php 打開此檔案後, 大概在 367行左右會看到如下代碼
  1.             if(!$this->param['sortid'] && !$this->thread['special'] && trim($this->param['message']) == '') {
  2.                 showmessage('post_sm_isnull');
  3.             }
  4.             $publishdate = null;
複製代碼
在上述代碼兩個 if 區段中間插入 BEGIN~END 代碼如下
  1.             if(!$this->param['sortid'] && !$this->thread['special'] && trim($this->param['message']) == '') {
  2.                 showmessage('post_sm_isnull');
  3.             }
  4.             /* PIGOO BEGIN */
  5.             if(in_array($this->forum['fid'], getglobal('config/pigoo/forums')) && preg_match(getglobal('config/pigoo/pattern'), $this->param['message']) == 0) {
  6.                 return $this->showmessage('post_img_isnull');
  7.             }
  8.             /* PIGOO END */
  9.             $publishdate = null;
複製代碼


最後感謝 wish大大半夜的協助魔測試及支持魔的各位痞友先進們~

評分

6

查看全部評分

發表於 2016-1-4 19:04:55 | 顯示全部樓層

喔!config_global.php也要改嗎?我沒有改耶!
 樓主| 發表於 2016-1-4 19:10:49 | 顯示全部樓層
wish 發表於 2016-1-4 07:04 PM
喔!config_global.php也要改嗎?我沒有改耶!

回wish大,

這個總結版是魔今天最後做的一次調整, 是把從頭到尾有改動的代碼重新整理一次...
魔順便附上整理過的檔案給您~

pigoo_discuz_final.rar

63.85 KB, 下載次數: 3

發表於 2016-1-4 19:13:00 | 顯示全部樓層
真好,這幾天剛上完課"開悟入道",就看到這些不錯的測試結果~
100分100分~

評分

1

查看全部評分

發表於 2016-1-4 19:13:38 | 顯示全部樓層
moripi 發表於 2016-1-4 07:10 PM
回wish大,

這個總結版是魔今天最後做的一次調整, 是把從頭到尾有改動的代碼重新整理一次...

原來是這樣,你想的真周到,我等一下換上。
謝謝你的幫忙

評分

1

查看全部評分

 樓主| 發表於 2016-1-4 19:20:07 | 顯示全部樓層
jojoling 發表於 2016-1-4 07:13 PM
真好,這幾天剛上完課"開悟入道",就看到這些不錯的測試結果~
100分100分~

回jojoling大,

少了您的加入, 真是多花了點時間除錯~{:14_1489:}

PS: 那敢問jojoling大何時要遁入空門?{:14_1489:}{:14_1483:}
發表於 2016-1-8 11:04:49 | 顯示全部樓層
moripi 發表於 2016-1-4 07:20 PM
回jojoling大,

少了您的加入, 真是多花了點時間除錯~

我們上課,下課後最重要的就是:如實生活~
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-3-29 03:41 PM , Processed in 0.128037 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.