1 頁 (共 3 頁)

[問題] 付費瀏覽-設定使用者權限

發表於 : 2005-05-10 02:59
ferrari888
問題外掛及版本: 付費瀏覽-設定使用者權限
外掛的下載網址: http://phpbb-tw.net/phpbb/viewtopic.php?p=65398#65398
phpbb版本: phpBB2.0.15
外掛問題描述:

此 add on 外掛可以設定各個版可設定金額的使用者等級...
檔案下載:
http://www.e-legend.com.tw/swdol/php/bb ... php?t=1002
----------------------------------------------------------------------------
我已裝了 Pay_Money_MOD_1.0.9 ,目前想要增加 (設定使用者權限) 的 ADD ON,
就是在 "付費瀏覽" 後台管理中,增加可以單獨設定哪個版面要開啟 "付費瀏覽" 的功能,
可惜目前此下載連結已斷,如哪位前輩有此外掛,請前輩分享一下,先謝了!

發表於 : 2005-05-12 00:25
~倉木麻衣~
嗯~經過這二天的自我摸索後~終於將它改出來了~
其實也不會很難的感覺@@
可依版面設定允許發表付費文章的使用者等級(全部會員、註冊會員、特定群組、版主或管理員)
初步於本人自己的機器上通過測試
且多追加了一個判斷~以防止未經授權的使用者可透過另存posting表單的方式於限制發表付費文章的版面發表付費文章

試看看底下的改法~
適用版本:付費瀏覽 1.0.9 & pay_mod_extra 0.1.1
特別感謝心靈捕手及ferrari888於後續討論中的指正
修改includes/functions_post.php的內容, 使其相容於pay_mod_extra 0.1.1版

代碼: 選擇全部

#
#--------[ SQL ]----------------
#
ALTER TABLE phpbb_auth_access ADD auth_paymoney TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_forums ADD auth_paymoney TINYINT(2) DEFAULT '0' NOT NULL;

#
#--------[ OPEN ]----------------
#
posting.php

#
#--------[ FIND ]----------------
#
	$template->assign_block_vars('switch_paymoney_text', array());

#
#--------[ REPLACE WITH ]----------------
#
	if ($is_auth['auth_paymoney'])
	{
		$template->assign_block_vars('switch_paymoney_text', array());
	}

#
#--------[ OPEN ]----------------
#
viewforum.php

#
#--------[ FIND ]----------------
#
$s_auth_can .= ( ( $is_auth['auth_vote'] ) ? $lang['Rules_vote_can'] : $lang['Rules_vote_cannot'] ) . '<br />';

#
#--------[ AFTER, ADD ]----------------
#
$s_auth_can .= ( ( $board_config['allow_paymoney'] ) ? ( ($is_auth['auth_paymoney'] && $userdata['session_logged_in']) ? $lang['Rules_paymoney_can'] : $lang['Rules_paymoney_cannot'] ) : $lang['Rules_paymoney_cannot'] ) . '<br />';

#
#--------[ OPEN ]----------------
#
viewtopic.php

#
#--------[ FIND ]----------------
#
$sql = "SELECT t.topic_id, t.topic_title,

#
#--------[ IN-LINE FIND ]----------------
#
f.auth_attachments

#
#--------[ IN-LINE AFTER, ADD ]----------------
#
, f.auth_paymoney

#
#--------[ FIND ]----------------
#
$s_auth_can .= ( ( $is_auth['auth_vote'] ) ? $lang['Rules_vote_can'] : $lang['Rules_vote_cannot'] ) . '<br />';

#
#--------[ AFTER, ADD ]----------------
#
$s_auth_can .= ( ( $board_config['allow_paymoney'] ) ? ( ($is_auth['auth_paymoney'] && $userdata['session_logged_in']) ? $lang['Rules_paymoney_can'] : $lang['Rules_paymoney_cannot'] ) : $lang['Rules_paymoney_cannot'] ) . '<br />';


#
#--------[ OPEN ]----------------
#
admin/admin_forumauth.php

# 
#-----[ FIND ]------------------------------------------------ 
# 
//                View

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
Poll

# 
#-----[ IN-LINE AFTER, ADD ]---------------------------------- 
#
    Pay_Money

# 
#-----[ FIND ]------------------------------------------------ 
# 
0  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
1  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
2  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
3  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
4  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
5  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
6  => array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
),

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, AUTH_REG

# 
#-----[ FIND ]------------------------------------------------ 
# 
$forum_auth_fields = array(

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 
);

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#
, 'auth_paymoney'

#
#--------[ FIND ]----------------
#
$field_names = array(

#
#--------[ FIND ]----------------
#
']);


#
#--------[ REPLACE WITH ]----------------
#
'],

#
#--------[ AFTER, ADD ]----------------
#
	'auth_paymoney' => $lang['Paymoney']);

#
#--------[ OPEN ]----------------
#
admin/admin_ug_auth.php

#
#--------[ FIND ]----------------
#
$forum_auth_fields = array(

#
#--------[ IN-LINE FIND ]----------------
#
);

#
#--------[ IN-LINE BEFORE, ADD ]----------------
#
, 'auth_paymoney'

#
#--------[ FIND ]----------------
#
$auth_field_match = array(

#
#--------[ FIND ]----------------
#
);

#
#--------[ REPLACE WITH ]----------------
#
,

#
#--------[ AFTER, ADD ]----------------
#
	'auth_paymoney' => AUTH_PAYMONEY);

#
#--------[ FIND ]----------------
#
$field_names = array(

#
#--------[ FIND ]----------------
#
']);

#
#--------[ REPLACE WITH ]----------------
#
'],

#
#--------[ AFTER, ADD ]----------------
#
	'auth_paymoney' => $lang['Paymoney']);

#
#--------[ OPEN ]----------------
#
includes/auth.php

#
#--------[ FIND ]----------------
#
# 約在第58行
			$a_sql = 'a.auth_view, a.auth_read,

#
#--------[ IN-LINE FIND ]----------------
#
';

#
#--------[ IN-LINE BEFORE, ADD ]----------------
#
, a.auth_paymoney

#
#--------[ FIND ]----------------
#
# 約在第59行
			$auth_fields = array('auth_view', 'auth_read'

#
#--------[ IN-LINE FIND ]----------------
#
);

#
#--------[ IN-LINE BEFORE, ADD ]----------------
#
, 'auth_paymoney'

#
#--------[ FIND ]----------------
#
		default:
			break;

#
#--------[ BEFORE, ADD ]----------------
#
		case AUTH_PAYMONEY:
			$a_sql = 'a.auth_paymoney';
			$auth_fields = array('auth_paymoney');
			break;

#
#--------[ OPEN ]----------------
#
includes/constants.php

#
#--------[ FIND ]----------------
#
define('AUTH_ATTACH', 11);

#
#--------[ AFTER, ADD ]----------------
#
# 如果曾有?#91;入其他外掛, 則請自行調整後面序號 12為其它數字
define('AUTH_PAYMONEY', 12);

#
#--------[ OPEN ]----------------
#
includes/functions_post.php

#
#--------[ FIND ]----------------
#
	if ($userdata['user_id'] == ANONYMOUS || $pay_money < -1)

#
#--------[ REPLACE WITH ]----------------
#
	$is_auth_pay = auth(AUTH_PAYMONEY, $forum_id, $userdata);
	if ($userdata['user_id'] == ANONYMOUS || $pay_money < -1 || !$is_auth_pay['auth_paymoney'])

#
#--------[ FIND ]----------------
#
# 有安裝pay_mod_extra 0.1.1版的才需要執行這個修改\r
		$pay_money = -1;

#
#--------[ BEFORE, ADD ]----------------
#
# 有安裝pay_mod_extra 0.1.1版的才需要執行這個修改\r
		if (preg_match("#\[sell\].*\[/sell\]#si", $post_message))
		{
			$post_message = preg_replace("#\[/?sell\]#", '', $post_message);
		}

#
#--------[ OPEN ]----------------
#
language/lang_chinese_traditional_taiwan/lang_main.php

#
#--------[ FIND ]----------------
#
$lang['Rules_vote_cannot']

#
#--------[ AFTER, ADD ]----------------
#
$lang['Rules_paymoney_can'] = '您 <b>可以</b> 在這個版面?#93;定付費';
$lang['Rules_paymoney_cannot'] = '您 <b>無法</b> 在這個版面?#93;定付費';

#
#--------[ SAVE/CLOSE ALL FILES]----------------
#
# EoM
註:上述程式中的「?#93; 」為「設」字

發表於 : 2005-05-12 02:36
ferrari888
謝謝你 ~倉木麻衣~ 先來道謝,等一下試著裝裝看再來回報!
~倉木麻衣~ 您辛苦了,謝謝你,感激不盡!

發表於 : 2005-05-12 03:08
bc010843
請問有domo站可以看一下嗎 :oops:

發表於 : 2005-05-12 03:49
~倉木麻衣~
bc010843 寫:請問有domo站可以看一下嗎 :oops:
http://www.freepgs.com/sabcat/phpBB213/
帳號/密碼共三組
test1/test1
test2/test2
test3/test3

說明一下
測試區2 只有版面管理員才能設定付費\r
測試區3 只有pay群組才能設定付費\r
測試區4 只要是註冊會員皆可設定付費\r

pay群組成員有test1
test1 為測試區4的版面管理員\r
test2 為測試區2的版面管理員\r

對了~還有一件事要提醒一下
就是訪客預設就是不能設定付費~即使控制台裡的付費權限設為所有會員也一樣\r
另外~freepgs最近幾天好像不太穩~如果連不上我也沒辦法@_@

發表於 : 2005-05-12 06:42
ferrari888
已安裝完成,安裝過程沒有問題,
在這部份 "設" 字亂碼已更正,

請問 ~倉木麻衣~ 如下問題:

1. 付費瀏覽-設定使用者權限,安裝完成後,
在後台管理的部份,增加的選項是不是只有>> 付費瀏覽 這一項?
版面管理/權限設定/選擇一個版面/ >> 付費瀏覽\r

2. 那比如我的版區 002 不開放付費文章,那是不是將 002 版區的 權限設定
改為 系統管理員即可?

謝謝 ~倉木麻衣~ 兩天來的辛苦分享!!

先謝回覆!!

發表於 : 2005-05-12 07:01
天霜
2. 那比如我的版區 002 不開放付費文章,那是不是將 002 版區的 權限設定
改為 系統管理員即可?
沒錯~

我開始覺得要整理後釋出下一版的付費瀏覽開始越來越難了 :lol:

發表於 : 2005-05-12 07:02
ferrari888
天霜 寫:
2. 那比如我的版區 002 不開放付費文章,那是不是將 002 版區的 權限設定
改為 系統管理員即可?
沒錯~

我開始覺得要整理後釋出下一版的付費瀏覽開始越來越難了 :lol:
天霜 大大,您客氣了!以您的功力,這還難不倒你! :mrgreen:

發表於 : 2005-05-12 10:02
心靈捕手
~倉木麻衣~ 寫:嗯~經過這二天的自我摸索後~終於將它改出來了~
其實也不會很難的感覺@@
可依版面設定允許發表付費文章的使用者等級(全部會員、註冊會員、特定群組、版主或管理員)
初步於本人自己的機器上通過測試
且多追加了一個判斷~以防止未經授權的使用者可透過另存posting表單的方式於限制發表付費文章的版面發表付費文章
倉木麻衣 兄果然是功力非凡! (:Y)

其實, 早些時候, 見您盼有該檔案的人, 提出分享時,
就已經嗅出, 您應當會" 仗義勇為" 了.

我試裝, 測試結果, 發現有個地方出了點問題. 詳情如下:

例如:
假設我在後台, 將某個版面的付費瀏覽的權限, 設為" 系統管理員" 後,
我再用版面管理員或一般註冊會員, 進入該版面時,
在該版面下方, 的確有顯示" 您 無法 在這個版面設定付費";
可是, 當我再進到該版面瀏覽文章時,
在該( 版面) 文章下方, 卻還是顯示" 您 可以 在這個版面設定付費".

當然, 事實上, 無論是在該版面, 發表, ( 引言) 回覆, 都無法 在這個版面設定付費;
只是在該( 版面) 文章下方, 卻還是顯示" 您 可以 在這個版面設定付費".

我猜想:
是否在 viewtopic.php 還要加些判定權限的條件呢?
不知 倉木麻衣 兄是否有解決的辦法呢? ;-)

發表於 : 2005-05-12 10:33
~倉木麻衣~
ferrari888 寫:1. 付費瀏覽-設定使用者權限,安裝完成後,
在後台管理的部份,增加的選項是不是只有>> 付費瀏覽 這一項?
版面管理/權限設定/選擇一個版面/ >> 付費瀏覽
yes~
另外~問題2如同天霜的回答~
因為個人覺得既然權限部份可以設定成系統管理員才能設定付費的話\r
那麼就沒有必要再去針對各別版面做更細部的付費開啟與關閉設定動作
心靈捕手 寫:假設我在後台, 將某個版面的付費瀏覽的權限, 設為" 系統管理員" 後,
我再用版面管理員或一般註冊會員, 進入該版面時,
在該版面下方, 的確有顯示" 您 無法 在這個版面設定付費";
可是, 當我再進到該版面瀏覽文章時,
在該( 版面) 文章下方, 卻還是顯示" 您 可以 在這個版面設定付費".
感謝您的細心~
經過剛才的測試~確實在這部份漏了一小段\r
請將底下的程式碼加上

代碼: 選擇全部

#
#--------[ OPEN ]----------------
#
viewtopic.php

#
#--------[ FIND ]----------------
#
$sql = "SELECT t.topic_id, t.topic_title,

#
#--------[ IN-LINE FIND ]----------------
#
f.auth_attachments

#
#--------[ IN-LINE AFTER, ADD ]----------------
#
, f.auth_paymoney

#
#--------[ SAVE/CLOSE ALL FILES ]----------------
#
# EoM
前篇分享的改法也已做同步修正了~

發表於 : 2005-05-12 10:57
心靈捕手
~倉木麻衣~ 寫: 感謝您的細心~
經過剛才的測試~確實在這部份漏了一小段\r
請將底下的程式碼加上

代碼: 選擇全部

#
#--------[ OPEN ]----------------
#
viewtopic.php

#
#--------[ FIND ]----------------
#
$sql = "SELECT t.topic_id, t.topic_title,

#
#--------[ IN-LINE FIND ]----------------
#
f.auth_attachments

#
#--------[ IN-LINE AFTER, ADD ]----------------
#
, f.auth_paymoney

#
#--------[ SAVE/CLOSE ALL FILES ]----------------
#
# EoM
前篇分享的改法也已做同步修正了~
感謝您的分享!
這將會造福許多有這方面需求的網友, 真是功德無量! :-D

對於這部分語法, 我有個小小的修改建議, 如下:

代碼: 選擇全部

#
#--------[ OPEN ]----------------
#
viewtopic.php

#
#--------[ FIND ]----------------
#
$sql = "SELECT t.topic_id, t.topic_title,

#
#--------[ IN-LINE FIND ]----------------
#
f.auth_vote

#
#--------[ IN-LINE AFTER, ADD ]----------------
#
, f.auth_paymoney
因為, 當使用者沒有安裝 File Attachment Mod , 又毫無經驗時,
恐怕會抓不到程式碼.

同理, 也可用在以下的語法調整:
#
#--------[ OPEN ]----------------
#
includes/constants.php

#
#--------[ FIND ]----------------
\n#
define('AUTH_VOTE', 10);

#
#--------[ AFTER, ADD ]----------------
# 如果曾有加入其他外掛, 則請自行調整後面序號 11)
define('AUTH_PAYMONEY', 11);

發表於 : 2005-05-12 11:07
~倉木麻衣~
TO 心靈捕手:
關於f.auth_attachments 以及 define('AUTH_ATTACH', 11); 這二行
剛開始我確實也有與您相同的想法
不過後來翻了一下最原始的phpBB 2.0.15、2.0.14、2.0.6壓縮檔後發現\r
官方版本裡皆可找到上述二行的程式碼\r
因此排除了是安裝File Attachment MOD的結果
而且個人並沒有去反追源碼~所以初步推測應該是允許使用者上載頭像相關的吧~
不過define('AUTH_XXX', xx)這個確實是應該要多做說明比較好~感謝


後記:
稍微翻了一下
AUTH_ATTACH及auth_attachments 好像與頭像上傳無關
預設語系裡與attach 有關的只找到了簽名檔
但是phpbb_forums裡可找到auth_attachments欄位~看起來應該也與簽名檔無關才是\r
所以個人目前還無法理解AUTH_ATTACH常數及auth_attachments欄位於原始包裝裡的作用\r
倒是如果裝了 file attachment mod(附加檔案)後~
auth_attachments欄位會變成用來控制是否可發表檔案
至於檔案下載則是由auth_download負責控制

發表於 : 2005-05-13 04:54
ferrari888
謝謝兩位前輩讓這功能更完整,但有一個問題,想請問一下,
不知道是不是我個人設定上有錯誤,是這樣的..

此套外掛如上追加的部份我也已作修改,
現在新發現的問題是 >> 當我在版區付費瀏覽權限設定為 系統管理員,
然後在後台管理將 >> 基本組態/允許使用者設定付費文章 >> 設為 "否"

但回到 viewforum 頁面時,右下的的選項說明還是會出現 >> 您 可以 在這個版面設定付費\r

posting 頁面則是沒問題的,付費瀏覽是顯示 關閉

請問這是正常的嗎?還是我的設定有問題,

發表於 : 2005-05-13 10:40
心靈捕手
ferrari888 寫:謝謝兩位前輩讓這功能更完整,但有一個問題,想請問一下,
不知道是不是我個人設定上有錯誤,是這樣的..

此套外掛如上追加的部份我也已作修改,
現在新發現的問題是 >> 當我在版區付費瀏覽權限設定為 系統管理員,
然後在後台管理將 >> 基本組態/允許使用者設定付費文章 >> 設為 "否"

但回到 viewforum 頁面時,右下的的選項說明還是會出現 >> 您 可以 在這個版面設定付費\r

posting 頁面則是沒問題的,付費瀏覽是顯示 關閉

請問這是正常的嗎?還是我的設定有問題,
我剛剛測試一下, 的確如您所說的情況.

一般而言, 在基本組態, 預設是開啟" 付費瀏覽" 的機制;
而此外掛, 只是新增, 各個版面使用該機制的權限設定.

如果, 如您所言, 關閉" 付費瀏覽" 的機制,
那麼, 即使擁有該版面設定付費瀏覽的權限,
也是無法使用該機制的.( 雖然, 它還是顯示" 您 可以 在這個版面設定付費")

我想到一個比較簡單的解決方法, 提供您參考一下:

代碼: 選擇全部

#
#-----[ Open ]-----
#
viewforum.php

#
#-----[ Find ]-----
#
$s_auth_can .= ( ( $is_auth['auth_paymoney'] ) ? $lang['Rules_paymoney_can'] : $lang['Rules_paymoney_cannot'] ) . '<br />';

#
#-----[ Replace With ]-----
#
if( $board_config['allow_paymoney'] == 1 )
{
$s_auth_can .= ( $is_auth['auth_paymoney'] = $lang['Rules_paymoney_can'] ) . '<br />';
}
if( $board_config['allow_paymoney'] == 0 )
{
$s_auth_can .= ( $is_auth['auth_paymoney'] = $lang['Rules_paymoney_cannot'] ) . '<br />';
}

#
#-----[ Open ]-----
#
viewtopic.php

#
#-----[ Find ]-----
#
$s_auth_can .= ( ( $is_auth['auth_paymoney'] ) ? $lang['Rules_paymoney_can'] : $lang['Rules_paymoney_cannot'] ) . '<br />';

#
#-----[ Replace With ]-----
#
if( $board_config['allow_paymoney'] == 1 )
{
$s_auth_can .= ( $is_auth['auth_paymoney'] = $lang['Rules_paymoney_can'] ) . '<br />';
}
if( $board_config['allow_paymoney'] == 0 )
{
$s_auth_can .= ( $is_auth['auth_paymoney'] = $lang['Rules_paymoney_cannot'] ) . '<br />';
}

發表於 : 2005-05-13 11:36
小竹子
請不要讓標題更長了,無助於文章瀏覽,如果您要表達您的感激之意,可以回覆文章或是修改您的內容!