參考連結:非官方外掛問題區
使用版本: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;
}
?>已解決:
第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
