[原創]匿名討論板功能!

MODs Released by Other phpbb Sites
非官方認證通過之 MOD ,或許有安全性之疑慮,所有問題由原發表者回覆!

版主: 版主管理群

主題已鎖定
KCTONY
星球公民
星球公民
文章: 158
註冊時間: 2002-06-20 18:44
來自: GB
聯繫:

[原創]匿名討論板功能!

文章 KCTONY »

剛好想到要做一個心情留言板\r
又想加入匿名功能...讓網友能盡情抒發自己的心情~
於是這樣的MOD就產生囉 ^_^

範例網站:GameQ 心情留言板


不過還有一點點問題
有關Search.php的部份
麻煩高人指點了!!

至於 還有什麼地方漏掉沒隱藏的 也有勞各位告知了 ^_^

========================================
修改紀錄:
*如果都沒裝過的請跳過從開始安裝開始

2003/10/08 16:22 BBCODE失效問題解決:
http://phpbb-tw.net/phpbb/viewtopic.php?p=115050#115050

2003/10/08 16:27 posting.php 語法錯誤的地方\r
http://phpbb-tw.net/phpbb/viewtopic.php?p=115051#115051

2003/10/08 16:38 最後發表人名顯示問題 *感謝感謝atthis補充
http://phpbb-tw.net/phpbb/viewtopic.php?p=115043#115043

2003/10/09 16:56 TOP5 最後發表人名顯示問題
http://phpbb-tw.net/phpbb/viewtopic.php?p=115054#115054

========================================
開始安裝:

代碼: 選擇全部

SQL:
ALTER TABLE phpbb_posts ADD post_ano VARCHAR( 1 ) DEFAULT '0' NOT NULL AFTER post_time;
打開 lang_main.php

加入\r

代碼: 選擇全部

//Anonymous_MOD_By_KCTONY
$lang['Anonymous_user'] = '匿名';
$lang['Anonymous_close'] = '資料保密';
$lang['Anonymous_post'] = '這篇文章設定保密';
//END_Anonymous_MOD

打開index.php
尋找\r

代碼: 選擇全部

$last_post .= ($forum_data[$j]['user_id'] == ANONYMOUS ) ? ( ($forum_data[$j]['post_username']!= '' ) ? $forum_data[$j]['post_username'] . ' ' : $lang['Guest'] . ' ' ) : '<ahref="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '='  . $forum_data[$j]['user_id']) . '">' . $forum_data[$j]['username'] . '</a> ';
之前加上

代碼: 選擇全部

//Anonymous_MOD_By_KCTONY
if ($forum_id=='11'&$userdata['user_level']<ADMIN){
$forum_data[$j]['username'] = '';
}
//END_Anonymous_MOD
*同樣forum_id='11'的部份要改成匿名版面的id


打開 viewforum.php

尋找\r

代碼: 選擇全部

// Grab all the basic data (all topics except announcements)
// for this forum
//
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
在 $sql = "SELECT t.*, ...同一行尋找\r

代碼: 選擇全部

, p.post_username
在其後加入\r

代碼: 選擇全部

, p.post_ano
尋找\r

代碼: 選擇全部

$last_post_author = ( $topic_rowset[$i]['id2'] == ANONYMOUS ) ?( ($topic_rowset[$i]['post_username2'] != '' ) ? $topic_rowset[$i]['post_username2'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '='  . $topic_rowset[$i]['id2']) . '">' . $topic_rowset[$i]['user2'] . '</a>';
之後加上

代碼: 選擇全部

                //Anonymous_MOD_By_KCTONY
                if ($topic_rowset[$i]['post_ano']&$userdata['user_level']<ADMIN){
                        $last_post_author = $lang['Anonymous_user'];
                }
                //END_Anonymous_MOD
尋找\r

代碼: 選擇全部

		$topic_author .= ( $topic_rowset[$i]['user_id'] != ANONYMOUS ) ? '</a>' : '';
之後加入\r

代碼: 選擇全部

                //Anonymous_MOD_By_KCTONY
                if ($topic_rowset[$i]['post_ano']&$userdata['user_level']<ADMIN){
		  $topic_author = $lang['Anonymous_user'];
                }
                //END_Anonymous_MOD

打開 search.php

尋找\r

代碼: 選擇全部

			$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
同一行尋找\r

代碼: 選擇全部

, p.post_username
在其後加上

代碼: 選擇全部

, p.post_ano

尋找\r

代碼: 選擇全部

				$template->assign_block_vars("searchresults", array(
在上方加入\r

代碼: 選擇全部

                                //Anonymous_MOD_By_KCTONY
                                if ($searchset[$i]['post_ano']&$userdata['user_level']<ADMIN){
		                  $poster = $lang['Anonymous_user'];
                                }
                                //END_Anonymous_MOD

尋找\r

代碼: 選擇全部

                               $template->assign_block_vars('searchresults', array(
在上方加入\r

代碼: 選擇全部

                                //Anonymous_MOD_By_KCTONY
                                if ($searchset[$i]['post_ano']&$userdata['user_level']<ADMIN){
		                  $topic_author = $lang['Anonymous_user'];
                                }
                                //END_Anonymous_MOD 

後來發現 = =" 只改這樣 搜尋使用者名稱的話\r
還是會被找出來 雖然顯示是匿名
搜尋

代碼: 選擇全部

				WHERE p.post_id IN ($search_results)
在下方加入\r

代碼: 選擇全部

					AND p.post_ano = 0
搜尋

代碼: 選擇全部

				WHERE t.topic_id IN ($search_results)
在下方加入\r

代碼: 選擇全部

					AND p.post_ano = 0

這樣就完全不會顯示出來了
不過 還是會有搜尋結果 怪怪的 = ="
麻煩高人指點了 Q_Q"




打開 viewtopic.php

尋找\r

代碼: 選擇全部

	$template->assign_block_vars('postrow', array(

上方加入\r

代碼: 選擇全部

        //Anonymous_MOD_By_KCTONY
        if ($postrow[$i]['post_ano']&$userdata['user_level']<ADMIM){
	  $poster_gender = $lang['Anonymous_close'];
	  $poster_nickname = $lang['Anonymous_close'];
	  $poster = $lang['Anonymous_close'];
	  $poster_from = $lang['Anonymous_close'];
	  $poster_rank = '';
	  $poster_posts = '';
	  $poster_avatar = '';
	  $friend_img = '';
	  $quote_img = '';
	  $edit_img = '';
	  $pm_img = '';
        }
        //END_Anonymous_MOD
*視各位裝的MOD,視情況把那些資料全部保密或者清除掉!

有裝Cash mod的再往下找到\r

代碼: 選擇全部

$template->assign_block_vars('postrow.cashrow', array(  'CASH_NAME' => (($cash_set['cash_image'] == 1)?('<img src="'.$phpbb_root_path.$cash_set['cash_imageurl'].'" />'):($cash_set['cash_name'])),
之前加上

代碼: 選擇全部

        if ($postrow[$i]['post_ano']&$userdata['user_level']<ADMIM){
                $postrow[$i][$cash_set['cash_dbfield']]='';
        }

打開 posting.php
尋找\r

代碼: 選擇全部

		$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "
同一行尋找\r

代碼: 選擇全部

, p.post_id
在其後加上

代碼: 選擇全部

, p.post_ano

尋找\r

代碼: 選擇全部

			$message = '[ quote="' . $quote_username . '"]' . $message . '[/quote]';
*這裡要找個是 [quote ......
我多用了一個空格 不然會被當成引言 = =" 記得換一下

上方加入\r

代碼: 選擇全部

                        //Anonymous_MOD_By_KCTONY
                        if ($topic_rowset[$i]['post_ano']&$userdata['user_level']<ADMIN){
		           $quote_username = $lang['Anonymous_user'];
                        }
                        //END_Anonymous_MOD
尋找\r

代碼: 選擇全部

// Set toggles for various options
//
下方加入\r

代碼: 選擇全部

        //Anonymous_MOD_By_KCTONY
	$anonymous_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['anonymous_post']) ) ? TRUE : 0 ) : 0;
尋找\r

代碼: 選擇全部

			prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);
同一行尋找\r

代碼: 選擇全部

, $html_on
在其後加入\r

代碼: 選擇全部

, $anonymous_on

尋找\r

代碼: 選擇全部

				submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
同一行尋找\r

代碼: 選擇全部

, $html_on
在其後加入\r

代碼: 選擇全部

, $anonymous_on

尋找\r

代碼: 選擇全部

			$html_on = ( $post_info['enable_html'] ) ? true : false;
上方加入\r

代碼: 選擇全部

			$anonymous_on = ( $post_info['post_ano'] ) ? true : false; //Anonymous_MOD_By_KCTONY

尋找\r

代碼: 選擇全部

	'L_DISABLE_HTML' => $lang['Disable_HTML_post'], 
下方加入\r

代碼: 選擇全部

	'L_ANONYMOUS_POST' => $lang['Anonymous_post'], //Anonymous_MOD_By_KCTONY
尋找\r

代碼: 選擇全部

	'S_HTML_CHECKED' => ( !$html_on ) ? 'checked="checked"' : '',
下方加入\r

代碼: 選擇全部

	'S_ANO_CHECKED' => ( !$anonymous_on ) ? 'checked="checked"' : '',  //Anonymous_MOD_By_KCTONY

尋找\r

代碼: 選擇全部

//
// HTML toggle selection
上方加入\r

代碼: 選擇全部

//
// Anonymous selection
// Anonymous_MOD_By_KCTONY
if ( $forum_id=='113' )
{
	$template->assign_block_vars('anonymous_checkbox', array());
}
*$forum_id=='113'的數字依你所需要保密的看板在設
本來是想設在資料庫裡, 考量到這功能通常只有一兩個版需要保密 所以不涉在資料庫中
如果要設兩個以上的板可以設定保密
設成 if ( $forum_id=='113' || $forum_id=='114' ) 類推...


打開 includes\functions_post.php
尋找\r

代碼: 選擇全部

//
// Prepare a message for posting
// 
function prepare_post(&$mode, &$post_data, &$bbcode_on, &$html_on, &$smilies_on, &$error_msg, &$username, &$bbcode_uid, &$subject, &$message, &$poll_title, &$poll_options, &$poll_length)
在 function prepare_post... 同一行尋找\r

代碼: 選擇全部

, &$html_on
在其後加入\r

代碼: 選擇全部

, &$anonymous_on

尋找\r

代碼: 選擇全部

//
// Post a new topic/reply/poll or edit existing post/poll
//
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length)
在 function submit_post(... 同一行尋找\r

代碼: 選擇全部

, &$html_on
在其後加入\r

代碼: 選擇全部

, &$anonymous_on

尋找\r

代碼: 選擇全部

	$sql = ($mode != "editpost") ? "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, " . $userdata['user_id'] . ", '$post_username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $attach_sig)" : "UPDATE " . POSTS_TABLE . " SET post_username = '$post_username', enable_bbcode = $bbcode_on, enable_html = $html_on, enable_smilies = $smilies_on, enable_sig = $attach_sig" . $edited_sql . " WHERE post_id = $post_id";
在同一行尋找\r

代碼: 選擇全部

, post_time
在其後加入\r

代碼: 選擇全部

, post_ano
在同一行尋找\r

代碼: 選擇全部

, $current_time
在其後加入\r

代碼: 選擇全部

, '$anonymous_on'
在同一行尋找\r

代碼: 選擇全部

, enable_html = $html_on
在其後加入\r

代碼: 選擇全部

, post_ano = $anonymous_on



打開 includes\topic_review.php

尋找\r

代碼: 選擇全部

			$template->assign_block_vars('postrow', array(
上方加入\r

代碼: 選擇全部

                        //Anonymous_MOD_By_KCTONY
                        if ($row['post_ano']&$userdata['user_level']<ADMIN){
	                  $poster = $lang['Anonymous_close'];
                        }
                        //END_Anonymous_MOD
*視各位裝的MOD,視情況把那些資料全部保密或者清除掉!




打開 templates\your_template\posting_body.tpl

尋找\r

代碼: 選擇全部

<!-- BEGIN switch_html_checkbox -->
\n
上方加入\r

代碼: 選擇全部

		  <!-- BEGIN anonymous_checkbox -->
		  <tr>
			<td>
			  <input type="checkbox" name="anonymous_post" {S_ANO_CHECKED} />
			</td>
			<td><span class="gen">{L_ANONYMOUS_POST}</span></td>
		  </tr>
		  <!-- END anonymous_checkbox -->
另外有裝"友善列印"的
打開printview.php
尋找\r

代碼: 選擇全部

$poster = $postrow
之後加上

代碼: 選擇全部

        //Anonymous_MOD_By_KCTONY
        if ($postrow[$i]['post_ano']&$userdata['user_level']<ADMIM){
                $poster = $lang['Anonymous_user'];
        }
        //END_Anonymous_MOD
有裝TOP5的
打開adv_top5.php
尋找\r

代碼: 選擇全部

	$sql = "SELECT post_username, user_id, username, post_time
同一行尋找\r

代碼: 選擇全部

, post_time
在其後加入\r

代碼: 選擇全部

, post_ano

尋找\r

代碼: 選擇全部

	$replier_name = ( $replier_id != ANONYMOUS ) ? $r_row['username'] : ( !$r_row['post_username'] ? $lang['Guest'] : $r_row['post_username']);
在之後加入\r

代碼: 選擇全部

        //Anonymous_MOD_By_KCTONY 
        if ($postrow[$i]['post_ano']&$userdata['user_level']<ADMIM){
          $replier_name = $lang['Anonymous_close'];
        }
        //END_Anonymous_MOD
主題已鎖定

回到「非官方認證外掛」