[問題]Cashmod配roc付費瀏覽的問題(已解決)

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
ilovekyoiori
星球普通子民
星球普通子民
文章: 5
註冊時間: 2004-05-06 16:32

[問題]Cashmod配roc付費瀏覽的問題(已解決)

文章 ilovekyoiori »

問題外掛:Cashmod 2.2.1
參考連結:非官方外掛問題區
使用版本:phpBB 2.0.8
網站位置:http://members.lycos.co.uk/ilovekyoiori
狀況描述:

我到控制台選虛擬貨幣管理的細部設定,設定好按送出會出現下面的訊息\r

ailed to update Cash Mod settings for Cash Mod set 3

DEBUG MODE

SQL Error : 1054 Unknown column 'cash_max_sellingprice' in 'field list'

UPDATE phpbb_cash SET cash_imageurl = '', cash_perpost = 25, cash_postbonus = 2, cash_perreply = 25, cash_perchar = 20, cash_maxearn = 75, cash_perpm = 0, cash_allowance = 0, cash_allowanceamount = 0, cash_allowancetime = 2, cash_max_sellingprice = 0, cash_min_sellingprice = 0, cash_max_fortunerequired = 0, cash_min_fortunerequired = 0, cash_settings = 3313 WHERE cash_id = 3

Line : 116
File : /data/members/free/tripod/uk/i/l/o/ilovekyoiori/htdocs/admin/cash_settings.php

cash_setting.php

代碼: 選擇全部

/***************************************************************************
 *                              cash_settings.php
 *                            -------------------
 *   begin                : Thursday, Jul 14, 2003
 *   copyright            : (C) 2003 Xore
 *   email                : mods@xore.ca
 *
 *   $Id: cash_settings.php,v 2.1.1.0 2003/09/18 22:57:57 Xore $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', 1);
define('IN_CASHMOD', 1);

//
// Let's set the root dir for phpBB
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);

if ( $board_config['cash_adminnavbar'] )
{
	$navbar = 1;
	include('./admin_cash.'.$phpEx);
}

if ( !$cash->currency_count() )
{
	message_die(GENERAL_MESSAGE, $lang['Insufficient_currencies']);
}

$update_set = array(CURRENCY_ENABLED => 'bool',
					CURRENCY_IMAGE => 'bool',			'cash_imageurl' => 'text',			CURRENCY_PREFIX => 'bool',
					'cash_perpost' => 'float',			'cash_postbonus' => 'float',		'cash_perreply' => 'float',			'cash_perchar' => 'float',			'cash_maxearn' => 'float',			'cash_perpm' => 'float',
					CURRENCY_VIEWPROFILE => 'bool',		CURRENCY_VIEWTOPIC => 'bool',		CURRENCY_VIEWMEMBERLIST => 'bool',
					CURRENCY_INCLUDEQUOTES => 'bool',	CURRENCY_EXCHANGEABLE => 'bool',	CURRENCY_DONATE => 'bool',			CURRENCY_MODEDIT => 'bool',			CURRENCY_ALLOWNEG => 'bool',
					'cash_allowance' => 'int',			'cash_allowanceamount' => 'float',	'cash_allowancetime' => 'int',		'cash_max_sellingprice' => 'float',	'cash_min_sellingprice' => 'float',		'cash_max_fortunerequired' => 'float',	'cash_min_fortunerequired' => 'float');

$table_updated = false;
while ( $c_cur = &$cash->currency_next($cm_i) )
{
	$varname = 'cash_' . $c_cur->id();
	if ( isset($HTTP_POST_VARS['submit']) &&
		 isset($HTTP_POST_VARS[$varname]) &&
		 is_array($HTTP_POST_VARS[$varname]) )
	{
		$updates = array();
		$settings = $c_cur->data('cash_settings');
		$settings_update = false;
		while ( list($key,$type) = each ( $update_set ) )
		{
			if ( isset($HTTP_POST_VARS[$varname][$key]) )
			{
				$data = $HTTP_POST_VARS[$varname][$key];
				switch ( $type )
				{
					case 'bool':
						if ( ($data == '0') || ($data == '1') )
						{
							$data = intval($data);
							$key = intval($key);
							if ( $data )
							{
								$settings |= $key;
							}
							else
							{
								$settings &= ~$key;
							}
							$settings_update = true;
						}
						break;
					case 'text':
						$updates[] = $key . ' = \'' . str_replace("\'", "''", $data) . '\'';
						break;
					case 'int':
						if ( is_numeric($data) )
						{
							$updates[] = $key . ' = ' . intval($data);
						}
						break;
					case 'float':
						if ( is_numeric($data) )
						{
							$updates[] = $key . ' = ' . $c_cur->attribute_pack($key,$data);
						}
						break;
				}
			}
		}
		if ( $settings_update )
		{
			$updates[] = 'cash_settings = ' . $settings;
		}
		reset ( $update_set );
		if ( count($updates) > 0 )
		{
			$sql = "UPDATE " . CASH_TABLE . "
					SET " . implode(", ",$updates) . "
					WHERE cash_id = " . $c_cur->id();
			if ( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Failed to update Cash Mod settings for Cash Mod set " . $c_cur->id(), "", __LINE__, __FILE__, $sql);
			}
			$table_updated = true;
		}
	}
}

if ( $table_updated )
{
	$cash->refresh_table();
}

if ( isset($HTTP_POST_VARS['submit']) )
{
	$message = $lang['Cash_settings_updated'] . "<br /><br />" . sprintf($lang['Click_return_cash_settings'], "<a href=\"" . append_sid("cash_settings.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

	message_die(GENERAL_MESSAGE, $message);
}

$template->set_filenames(array(
	"body" => "admin/cash_settings.tpl")
);

$template->assign_vars(array(
	"S_CASH_SETTINGS_ACTION" => append_sid("cash_settings.$phpEx"),

	"NUM_COLUMNS" => ($cash->currency_count() + 1),

	"L_DISPLAY" => $lang['Display'],
	"L_IMPLEMENTATION" => $lang['Implementation'],
	"L_ALLOWANCES" => $lang['Allowances'],
	"L_ALLOWANCES_EXPLAIN" => $lang['Allowances_explain'],

	"L_YES" => $lang['Yes'],
	"L_NO" => $lang['No'],
	"L_CASH_SETTINGS_TITLE" => $lang['Cash_settings'],
	"L_CASH_SETTINGS_EXPLAIN" => $lang['Cash_settings_explain'],

	"L_CASH_ENABLED" => $lang['Cash_enabled'],
	"L_CASH_CURRENCY" => $lang['Cash_custom_currency'],
	"L_PREFIX" => $lang['Prefix'],
	"L_POSTFIX" => $lang['Postfix'],
	"L_CASH_IMAGE" => $lang['Cash_image'],
	"L_CASH_IMAGEURL" => $lang['Cash_imageurl'],
	"L_CASH_IMAGEURL_EXPLAIN" => $lang['Cash_imageurl_explain'],
	"L_CASH_CURRENCY_STYLE" => $lang['Cash_currency_style'],
	"L_CASH_CURRENCY_STYLE_EXPLAIN" => $lang['Cash_currency_style_explain'],
	"L_CASH_DISPLAY_USERCP" => $lang['Cash_display_usercp'],
	"L_CASH_DISPLAY_USERPOST" => $lang['Cash_display_userpost'],
	"L_CASH_DISPLAY_MEMBERLIST" => $lang['Cash_display_memberlist'],

	"L_CASH_AMOUNT_PER_POST" => $lang['Cash_amount_per_post'],
	"L_CASH_AMOUNT_POST_BONUS" => $lang['Cash_amount_post_bonus'],
	"L_CASH_AMOUNT_PER_REPLY" => $lang['Cash_amount_per_reply'],
	"L_CASH_AMOUNT_PER_CHARACTER" => $lang['Cash_amount_per_character'],
	"L_CASH_MAXEARN" => $lang['Cash_maxearn'],
	"L_CASH_AMOUNT_PER_PM" => $lang['Cash_amount_per_pm'],

	"L_CASH_INCLUDE_QUOTES" => $lang['Cash_include_quotes'],
	"L_CASH_ALLOW_EXCHANGE" => $lang['Cash_exchangeable'],
	"L_CASH_ALLOW_DONATE" => $lang['Cash_allow_donate'],
	"L_CASH_ALLOW_MOD_EDIT" => $lang['Cash_allow_mod_edit'],
	"L_CASH_ALLOW_NEGATIVE" => $lang['Cash_allow_negative'],

	"L_CASH_ALLOWANCE_ENABLED" => $lang['Cash_allowance_enabled'],
	"L_CASH_ALLOWANCE_AMOUNT" => $lang['Cash_allowance_amount'],
	"L_CASH_ALLOWANCE_FREQUNECY" => $lang['Cash_allownace_frequency'],
	"L_CASH_ALLOWANCE_FREQUNECIES_DAY" => $lang['Cash_allownace_frequencies'][CASH_ALLOW_DAY],
	"L_CASH_ALLOWANCE_FREQUNECIES_WEEK" => $lang['Cash_allownace_frequencies'][CASH_ALLOW_WEEK],
	"L_CASH_ALLOWANCE_FREQUNECIES_MONTH" => $lang['Cash_allownace_frequencies'][CASH_ALLOW_MONTH],
	"L_CASH_ALLOWANCE_FREQUNECIES_YEAR" => $lang['Cash_allownace_frequencies'][CASH_ALLOW_YEAR],
	"L_CASH_ALLOWANCE_NEXT" => $lang['Cash_allowance_next'],

	"CURRENCY_ENABLED" => CURRENCY_ENABLED,
	"CURRENCY_IMAGE" => CURRENCY_IMAGE,
	"CURRENCY_PREFIX" => CURRENCY_PREFIX,
	"CURRENCY_VIEWPROFILE" => CURRENCY_VIEWPROFILE,
	"CURRENCY_VIEWTOPIC" => CURRENCY_VIEWTOPIC,
	"CURRENCY_VIEWMEMBERLIST" => CURRENCY_VIEWMEMBERLIST,
	"CURRENCY_INCLUDEQUOTES" => CURRENCY_INCLUDEQUOTES,
	"CURRENCY_EXCHANGEABLE" => CURRENCY_EXCHANGEABLE,
	"CURRENCY_DONATE" => CURRENCY_DONATE,
	"CURRENCY_MODEDIT" => CURRENCY_MODEDIT,
	"CURRENCY_ALLOWNEG" => CURRENCY_ALLOWNEG,
	"CURRENCY_ALLOWANCE" => CURRENCY_ALLOWANCE,

	"L_SUBMIT" => $lang['Submit'], 
	"L_RESET" => $lang['Reset'])
);

while ( $c_cur = &$cash->currency_next($cm_i) )
{

	$enabled_cash_yes = ( $c_cur->mask(CURRENCY_ENABLED) ) ? "checked=\"checked\"" : "";
	$enabled_cash_no = ( !$c_cur->mask(CURRENCY_ENABLED) ) ? "checked=\"checked\"" : "";

	$image_yes = ( $c_cur->mask(CURRENCY_IMAGE) ) ? "checked=\"checked\"" : "";
	$image_no = ( !$c_cur->mask(CURRENCY_IMAGE) ) ? "checked=\"checked\"" : "";

	$currency_style_before = ( $c_cur->mask(CURRENCY_PREFIX) ) ? "checked=\"checked\"" : "";
	$currency_style_after = ( !$c_cur->mask(CURRENCY_PREFIX) ) ? "checked=\"checked\"" : "";

	$include_quotes_yes = ( $c_cur->mask(CURRENCY_INCLUDEQUOTES) ) ? "checked=\"checked\"" : "";
	$include_quotes_no = ( !$c_cur->mask(CURRENCY_INCLUDEQUOTES) ) ? "checked=\"checked\"" : "";

	$display_in_profile_yes = ( $c_cur->mask(CURRENCY_VIEWPROFILE) ) ? "checked=\"checked\"" : "";
	$display_in_profile_no = ( !$c_cur->mask(CURRENCY_VIEWPROFILE) ) ? "checked=\"checked\"" : "";

	$allow_exchange_yes = ( $c_cur->mask(CURRENCY_EXCHANGEABLE) ) ? "checked=\"checked\"" : "";
	$allow_exchange_no = ( !$c_cur->mask(CURRENCY_EXCHANGEABLE) ) ? "checked=\"checked\"" : "";

	$allow_donate_yes = ( $c_cur->mask(CURRENCY_DONATE) ) ? "checked=\"checked\"" : "";
	$allow_donate_no = ( !$c_cur->mask(CURRENCY_DONATE) ) ? "checked=\"checked\"" : "";

	$allow_mod_edit_yes = ( $c_cur->mask(CURRENCY_MODEDIT) ) ? "checked=\"checked\"" : "";
	$allow_mod_edit_no = ( !$c_cur->mask(CURRENCY_MODEDIT) ) ? "checked=\"checked\"" : "";

	$allow_negative_yes = ( $c_cur->mask(CURRENCY_ALLOWNEG) ) ? "checked=\"checked\"" : "";
	$allow_negative_no = ( !$c_cur->mask(CURRENCY_ALLOWNEG) ) ? "checked=\"checked\"" : "";

	$display_in_posts_yes = ( $c_cur->mask(CURRENCY_VIEWTOPIC) ) ? "checked=\"checked\"" : "";
	$display_in_posts_no = ( !$c_cur->mask(CURRENCY_VIEWTOPIC) ) ? "checked=\"checked\"" : "";

	$display_in_memberlist_yes = ( $c_cur->mask(CURRENCY_VIEWMEMBERLIST) ) ? "checked=\"checked\"" : "";
	$display_in_memberlist_no = ( !$c_cur->mask(CURRENCY_VIEWMEMBERLIST) ) ? "checked=\"checked\"" : "";

	$allowances_enabled_yes = (( !defined(CASH_ALLOWANCES_ENABLED) ) ? "disabled=\"disabled\" " : "") . (( $c_cur->data('cash_allowance') ) ? "checked=\"checked\"" : "");
	$allowances_enabled_no = ( !$c_cur->data('cash_allowance') ) ? "checked=\"checked\"" : "";

	$allowances_freq_day   = ( $c_cur->data('cash_allowancetime') == CASH_ALLOW_DAY   ) ? "checked=\"checked\"" : "";
	$allowances_freq_week  = ( $c_cur->data('cash_allowancetime') == CASH_ALLOW_WEEK  ) ? "checked=\"checked\"" : "";
	$allowances_freq_month = ( $c_cur->data('cash_allowancetime') == CASH_ALLOW_MONTH ) ? "checked=\"checked\"" : "";
	$allowances_freq_year  = ( $c_cur->data('cash_allowancetime') == CASH_ALLOW_YEAR  ) ? "checked=\"checked\"" : "";

	$allowances_next = $c_cur->data('cash_allowancenext');

	$template->assign_block_vars("cashrow",array(	"CASH_INDEX" => $c_cur->id(),
													"ENABLED_CASH_YES" => $enabled_cash_yes,
													"ENABLED_CASH_NO" => $enabled_cash_no,
													"CURRENCY" => $c_cur->name(),
													"IMAGE_YES" => $image_yes,
													"IMAGE_NO" => $image_no,
													"IMAGEURL" => $c_cur->data('cash_imageurl'),
													"CURRENCY_STYLE_BEFORE" => $currency_style_before,
													"CURRENCY_STYLE_AFTER" => $currency_style_after,
													"AMOUNT_PER_POST" => $c_cur->perpost(),
													"AMOUNT_POST_BONUS" => $c_cur->postbonus(),
													"AMOUNT_PER_REPLY" => $c_cur->perreply(),
													"AMOUNT_PER_CHAR" => $c_cur->perchar(),
													"MAXEARN" => $c_cur->maxearn(),
													"AMOUNT_PER_PM" => $c_cur->perpm(),
													"INCLUDE_QUOTES_YES" => $include_quotes_yes,
													"INCLUDE_QUOTES_NO" => $include_quotes_no,
													"DISPLAY_IN_PROFILE_YES" => $display_in_profile_yes,
													"DISPLAY_IN_PROFILE_NO" => $display_in_profile_no,
													"ALLOW_EXCHANGE_YES" => $allow_exchange_yes,
													"ALLOW_EXCHANGE_NO" => $allow_exchange_no,
													"ALLOW_DONATE_YES" => $allow_donate_yes,
													"ALLOW_DONATE_NO" => $allow_donate_no,
													"ALLOW_MOD_EDIT_YES" => $allow_mod_edit_yes,
													"ALLOW_MOD_EDIT_NO" => $allow_mod_edit_no,
													"ALLOW_NEGATIVE_YES" => $allow_negative_yes,
													"ALLOW_NEGATIVE_NO" => $allow_negative_no,
													"DISPLAY_IN_POSTS_YES" => $display_in_posts_yes,
													"DISPLAY_IN_POSTS_NO" => $display_in_posts_no,
													"DISPLAY_IN_MEMBERLIST_YES" => $display_in_memberlist_yes,
													"DISPLAY_IN_MEMBERLIST_NO" => $display_in_memberlist_no,
													"ALLOWANCES_ENABLED_YES" => $allowances_enabled_yes,
													"ALLOWANCES_ENABLED_NO" => $allowances_enabled_no,
													"ALLOWANCE_AMOUNT" => $c_cur->allowanceamount(),
													"ALLOWANCES_FREQ_DAY" => $allowances_freq_day,
													"ALLOWANCES_FREQ_WEEK" => $allowances_freq_week,
													"ALLOWANCES_FREQ_MONTH" => $allowances_freq_month,
													"ALLOWANCES_FREQ_YEAR" => $allowances_freq_year,
													"ALLOWANCE_NEXT" => $allowances_next,	"MAX_PRICE" => $c_cur->cashmaxsellingprice(),
		"MIN_PRICE" => $c_cur->cashminsellingprice(),
		"MAX_FORTUNE" => $c_cur->cashmaxfortunerequired(),
		"MIN_FORTUNE" => $c_cur->cashminfortunerequired(),
	));

}

$template->pparse("body");

include('./page_footer_admin.'.$phpEx);
後來又發現一個問題
進入有設定付費瀏覽的文章
會出現\r
Fatal error: Call to a member function on a non-object in /data/members/free/tripod/uk/i/l/o/ilovekyoiori/htdocs/includes/functions_hide.php on line 53

functions_hide.php

代碼: 選擇全部

<?php
/***************************************************************************
 *                            functions_hide.php
 *                            -------------------
 *   begin                : Tue, Nov 18, 2003
 *   copyright            : (C) 2003 shi@phpBB
 *   email                : roc@phpbbhost1.biz
 *
 *   $Id: functions_hide.php,v 1.0 2003/11/18 09:37:07
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *
 ***************************************************************************/

include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main_hide.' . $phpEx);

// Return value
//      true --- if the cash field is valid
//      false -- if the cash field is invalid
function get_cash_info($cash_id, &$cash_field_name, &$cash_name, &$is_prefix, &$max_min)
{
	global $board_config, $userdata, $db, $cash;
	
	$cash_field_name = '';
	$cash_name = '';
	$is_prefix = false;
	switch ($board_config['cash_system_type'])
	{
		case CASH_TYPE_POINTS:
			$cash_field_name = 'user_points';
			$cash_name = $board_config['points_name'];
			$max_min['max_price'] = $board_config['max_sellingprice'];
			$max_min['min_price'] = $board_config['min_sellingprice'];
			$max_min['max_fortune'] = $board_config['max_fortunerequired'];
			$max_min['min_fortune'] = $board_config['min_fortunerequired'];
			break;
			
		case CASH_TYPE_CASHMOD2:
			if (!$board_config['cash_disabled'])
			{
				while ( $c_cur = &$cash->currency_next($cm_i,CURRENCY_ENABLED) )
				{
					$c_cur = $cash->currency($cash_id);
					$cash_name = $c_cur->name(); 
					$cash_field_name = $c_cur->db();
					$is_prefix = $c_cur->mask(CURRENCY_PREFIX);
					$max_min['max_price'] = $c_cur->cashmaxsellingprice();
					$max_min['min_price'] = $c_cur->cashminsellingprice();
					$max_min['max_fortune'] = $c_cur->cashmaxfortunerequired();
					$max_min['min_fortune'] = $c_cur->cashminfortunerequired();
				}
			}
			break;

		default:
			$cash_name = $board_config['cash_type_name'];
			$cash_field_name = $board_config['cash_field_name'];
			$max_min['max_price'] = $board_config['max_sellingprice'];
			$max_min['min_price'] = $board_config['min_sellingprice'];
			$max_min['max_fortune'] = $board_config['max_fortunerequired'];
			$max_min['min_fortune'] = $board_config['min_fortunerequired'];
	}
	return (!empty($cash_field_name) && isset($userdata[$cash_field_name]));
}

function strip_hidden_contents($post, &$hiding_info)
{
	global $userdata, $db, $is_auth, $board_config;
	
	$hiding_info['type'] = '';
	$hiding_info['show_attachment'] = true;
	switch ( $post['hiding_type'] )
	{
		case REPLY_TO_READ:
			if ($board_config['allow_hide4reply'])
			{
				$hiding_info['type'] = 'Reply';
	
				$sql = 'SELECT poster_id
									FROM ' . POSTS_TABLE . '
									WHERE topic_id=' . $post['topic_id'] . '
										AND poster_id=' . $userdata['user_id'] . '
										AND post_time > ' . $post['post_time'];
				$check_view = 'if ( !(\$result = \$db->sql_query(\$sql)) )
					{
						message_die(GENERAL_ERROR, "Could not obtain posts information", "", __LINE__, __FILE__, \$sql);
					}
					\$canview = ( \$db->sql_numrows(\$result) > 0 );
					\$db->sql_freeresult(\$result);';
				}
			break;
		
		case PAY_TO_READ:
			if (get_cash_info($post['hiding_cash_id'], $cash_field_name, $cash_name, $is_prefix, $max_min))
			{
				$hiding_info['type'] = 'Sale';
				$hiding_info['cash_name'] = $cash_name;
				$hiding_info['cash_prefix'] = $is_prefix;
				$sql = 'SELECT user_id FROM ' . PAYMENT_TABLE . ' WHERE post_id=' . $post['post_id'] . ' AND user_id=' . $userdata['user_id'];
				\$check_view = "if ( !(\$result = \$db->sql_query(\$sql)) )
					{
						message_die(GENERAL_ERROR, \"Could not obtain payment information\", \"\", __LINE__, __FILE__, \$sql);
					}
					\$canview = ( \$db->sql_numrows(\$result) > 0 );
					\$db->sql_freeresult(\$result);";
			}
			break;
		
		case POSTS_TO_READ:
			if ( $board_config['allow_hide4posts'] )
			{
				$hiding_info['type'] = 'Posts';
				$check_view = '\$canview = ($userdata["user_posts"] >= $post["hiding_condition_value"]);';
			}
			break;
			
		case FORTUNE_TO_READ:
			if ( $board_config['allow_hide4fortune'] && (get_cash_info($post['hiding_cash_id'], $cash_field_name, $cash_name, $is_prefix, $max_min)) )
			{
				$hiding_info['type'] = 'Fortune';
				$hiding_info['cash_name'] = $cash_name;
				$hiding_info['cash_prefix'] = $is_prefix;
				$check_view = '\$canview = ($userdata[$cash_field_name] >= $post["hiding_condition_value"]);';
			}
			break;
	}		
	if ( $hiding_info['type'] )
	{
		if ( $userdata['session_logged_in'] )
		{
			if ($userdata['user_id'] != $post['poster_id'])
			{
				if ($is_auth['auth_mod'])
					$hiding_info['state'] = 'Can_read';
				else
				{
					eval($check_view);
					if ( $canview )
					{
						$hiding_info['state'] = 'Can_read';
					}
					else
					{
						$hiding_info['state'] = 'Cannot_read';
						$hiding_info['show_attachment'] = false;
						$hiding_info['post_id'] = $post['post_id'];
					}
				}
			}
			else
			{
				$hiding_info['state'] = 'Poster';
			}
		}
		else
		{
			$hiding_info['state'] = 'Cannot_read';
			$hiding_info['show_attachment'] = false;
			$hiding_info['post_id'] = $post['post_id'];
		}
		$hiding_info['hiding_condition_value'] = $post['hiding_condition_value'];
		
		if ( $hiding_info['show_attachment'] )
			$message = $post['post_text'];
		else
		{
			$uid=$post['bbcode_uid'];
			preg_match_all("#\[intro:$uid\](.*?)\[/intro:$uid\]#si", $post['post_text'], $matches, PREG_PATTERN_ORDER);
			$message = implode('', $matches[0]);
		}
		return $message;
	}
	else
		return $post['post_text'];
}

function get_hiding_info_box($hiding_info, $simple=false, $buy_action='')
{
	global $template, $lang, $phpEx;

	if ( !empty($hiding_info['type']) )
	{
		$template->set_filenames(array(
			'hidinginfo' => 'hiding_information.tpl')
		);
		
		$block_name = '';
		if ( in_array($hiding_info['type'], array('Sale', 'Fortune') ) )
		{
			if ($hiding_info['cash_prefix'])
			{
				$prefix = $hiding_info['cash_name'] . ' ';
				$postfix = '';
			}
			else
			{
				$prefix = '';
				$postfix = ' ' . $hiding_info['cash_name'];
			}
		}
		else
		{
			$prefix = '';
			$postfix = '';
		}

		switch ( $hiding_info['type'] )
		{
			case 'Sale':
				if ( empty($buy_action) )
					$buy_action = "viewtopic.$phpEx";
				if ( (!$simple) && ($hiding_info['state'] == 'Cannot_read') )
				{
					$block_name = 'selling';
					$template->assign_block_vars('selling', array(
						'L_SELL_DESCRIPTION' => $lang['Sale_info'][$hiding_info['state']],
						'L_SELLING_PRICE' => $lang['Selling_price'],
						'L_BUY' => $lang['Buy'],
						'U_POST_ID' => $hiding_info['post_id'],
						'S_BUYPOST_ACTION' => append_sid($buy_action),
						'SELLING_PRICE' => $prefix . intval($hiding_info['hiding_condition_value']) . $postfix )
					);
				}
				else
				{
					$block_name = 'bought';
					$template->assign_block_vars('bought', array(
						'L_BOUGHT_DESCRIPTION' => $lang['Sale_info'][$hiding_info['state']],
						'L_SELLING_PRICE' => $lang['Selling_price'],
						'SELLING_PRICE' => $prefix . intval($hiding_info['hiding_condition_value']) . $postfix )
					);
				}
				break;
				
			case 'Reply':
				$block_name = 'simple_hiding_box';
				$template->assign_block_vars('simple_hiding_box', array(
					'L_HIDING_DESCRIPTION' => $lang['Reply_info'][$hiding_info['state']])
				);
				break;
				
			case 'Posts':
			case 'Fortune':
				$block_name = 'simple_hiding_box';
				$template->assign_block_vars('simple_hiding_box', array(
					'L_HIDING_DESCRIPTION' => sprintf($lang[$hiding_info['type'] . '_info'][$hiding_info['state']], $prefix . intval($hiding_info['hiding_condition_value']) . $postfix) )
				);
				break;			
			
			default:
				break;
		}
		$template->assign_var_from_handle('tmpHiding', 'hidinginfo');
		if (!empty($block_name))
			unset($template->_tpldata[$block_name]);
		return $template->_tpldata['.'][0]['tmpHiding'];
	}
	else
		return '';
}

function buy_post($post_id, $url)
{
	global $userdata, $db, $lang, $template, $board_config;
	
	if ( $post_id <= 0 )
	{
		message_die(GENERAL_ERROR, 'Topic_post_not_exist');
	}
	if ( !$userdata['session_logged_in'] )
	{
		message_die(GENERAL_MESSAGE, $lang["Login_to_buy"]);
	}
	
	// Check if user have bought this post
	$sql = 'SELECT user_id FROM ' . PAYMENT_TABLE . " WHERE post_id=$post_id AND user_id=" . $userdata['user_id'];
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain payment information", '', __LINE__, __FILE__, $sql);
	}
	if ( $db->sql_numrows($result) )
	{
		message_die(GENERAL_MESSAGE, $lang['Post_bought_before']);
	}
	// Check if user have enough money to buy this post
	$sql = 'SELECT hiding_type, hiding_condition_value, hiding_cash_id, poster_id FROM ' . POSTS_TABLE . ' WHERE post_id=' . $post_id;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain post information", '', __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);
	
	if ( ($row['hiding_type'] <> PAY_TO_READ) || (!$row['hiding_condition_value']) )
	{
		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="3;url=' . $url)
		);
		message_die(GENERAL_MESSAGE, $lang['Not_for_sale'] . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . $url, '</a>'));
	}
	
	if (! get_cash_info($row['hiding_cash_id'], $cash_field_name, $cash_name, $is_prefix, $max_min))
		message_die(GENERAL_ERROR, $lang['No_valid_cash_type']);

	if ( abs($userdata[$cash_field_name]) < $row['hiding_condition_value'] )
	{
		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="3;url=' . $url)
		);
		message_die(GENERAL_ERROR, sprintf($lang['Not_enough_cash'], $cash_name) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . $url, '</a>'));
	}
	$post_price = intval($row['hiding_condition_value']);
	$poster_id = $row['poster_id'];
	$sql = 'UPDATE ' . USERS_TABLE . '
		SET ' . $cash_field_name . '=' . $cash_field_name . '+(' . $post_price . ')
		WHERE user_id=' . $poster_id;
	if ( !($db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not update poster's cash information", '', __LINE__, __FILE__, $sql);
	}

	$sql = 'UPDATE ' . USERS_TABLE . '
		SET ' . $cash_field_name . '=' . $cash_field_name . '-(' . $post_price . ')
		WHERE user_id=' . $userdata['user_id'];
	if ( !($db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not update user's cash information", '', __LINE__, __FILE__, $sql);
	}
	$sql = 'INSERT INTO ' . PAYMENT_TABLE . ' (post_id, user_id) VALUES (' . $post_id . ', ' . $userdata['user_id'] . ')';
	if ( !($db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, sprintf($lang['Buy_post_fail'], $cash_name));
	}
	
	$template->assign_vars(array(
		'META' => '<meta http-equiv="refresh" content="3;url=' . $url)
	);

	$message = $lang['Buy_post_success'] . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . $url, '</a>');
	message_die(GENERAL_MESSAGE, $message);
}

//convert the value range to string
function get_value_range_string($min, $max)
{
	$range = '';

	if (!is_int($max))
		$max = intval($max);
	if (!is_int($min))
		$min = intval($min); 

	if ($max && $min)
		$range = "($min ~ $max)";
	elseif ($max)
		$range = "(≤$max)";
	elseif ($min)
		$range = "(≥$min)";

	return '"' . $range . '"';
}

function aaget_value_range($hiding_type, $cash_id, &$min, &$max)
{
	global $board_config;
	
	$min = 0;
	$max = 0;
		
	switch ($hiding_type)
	{
		case PAY_TO_READ:
			if (get_cash_info($cash_id, $cash_field, $cash_name, $is_prefix, $max_min))
			{
				$min = $max_min['min_price'];
				$max = $max_min['max_price'];
			}
			else
				return false;
			break;
			
		case FORTUNE_TO_READ:
			if (get_cash_info($cash_id, $cash_field, $cash_name, $is_prefix, $max_min))
			{
				$min = $max_min['min_fortune'];
				$max = $max_min['max_fortune'];
			}
			else
				return false;
			break;
			
		case POSTS_TO_READ:
			$min = intval($board_config['max_postsrequired']);
			$max = intval($board_config['min_postsrequired']);
			break;
	}
	return true;
}

?>
我有重新再改過這2個檔,但還是沒辦法,

已解決:
第1個cash_setting.php的問題發生在\r
Advanced_Hide_Post_for_Cash_Mod_2[1].2_cn裡的install.php內容有錯誤,
導致沒有在資料庫增加到,必須自行在說明檔裡自己手動加入\r
ALTER TABLE phpbb_cash
ADD cash_max_sellingprice INT DEFAULT '0' NOT NULL ,
ADD cash_min_sellingprice INT DEFAULT '1' NOT NULL ,
ADD cash_max_fortunerequired INT DEFAULT '0' NOT NULL ,
ADD cash_min_fortunerequired INT DEFAULT '1' NOT NULL ;

第2個functions_hide.php則是自己的疏乎,

如果有人有裝advanced hide post for cash mod 2.2.x的話,可以參考一下

補充:
有裝advanced_hide_post_for_cash_mod_2.2.x,
Advanced_Hide_Post_for_Cash_Mod_2[1].2_cn
主題已鎖定

回到「外掛問題討論」