pointscp.php

来自「这是php编的论坛的原代码」· PHP 代码 · 共 330 行

PHP
330
字号
<?php
/***************************************************************************
 *                               pointscp.php
 *                            -------------------
 *   begin                : Sunday, April 14, 2002
 *   copyright            : (C) 2002 Bulletin Board Mods
 *   email                : ssjslim@yahoo.com
 *
 *   $Id: pointscp.php,v 1.1.1.1 2003/02/11 22:27:28 wei.gao Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   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);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.' . $phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

// -----------------------
// Page specific functions
//
function get_user_points($user_id)
{
	global $db;
	
	$sql = "SELECT user_points
			FROM " . USERS_TABLE . "
			WHERE user_id = $user_id";

	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Could not get user_points from $user_id.", '', __LINE__, __FILE__, $sql);
	}
	$points = $db->sql_fetchrow($result);
	
	return $points['user_points'];
}
//----------
function get_username_from_id($user_id)
{
	global $db;

	$sql = "SELECT username FROM " . USERS_TABLE . "
			WHERE user_id = $user_id AND user_id != " . ANONYMOUS;

	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Could not get username from $user_id.", '', __LINE__, __FILE__, $sql);
	}
	$username = $db->sql_fetchrow($result);
	
	return $username['username'];
}
//----------
function get_userid_from_name($username)
{
	global $db;
	
	$username = str_replace("\'", "''", trim($username));

	$sql = "SELECT user_id
			FROM " . USERS_TABLE . "
			WHERE username = '$username' AND user_id != " . ANONYMOUS;
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Could not get user_id from $username.", '', __LINE__, __FILE__, $sql);
	}
	$user_id = $db->sql_fetchrow($result);
	
	return $user_id['user_id'];
}
//
// End page specific functions
// ---------------------------


if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
	$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
}
else
{
	$mode = '';
}

$user_id = ( isset($HTTP_GET_VARS[POST_USERS_URL]) ) ? intval($HTTP_GET_VARS[POST_USERS_URL]) : 0;

$template->set_filenames(array(
	'body' => 'points_system.tpl')
);

//Start

if( $mode == 'donate' )
{
	if( !$userdata['session_logged_in'] )
	{
		$redirect = "pointscp.$phpEx&mode=donate";
		$redirect .= ( isset($user_id) ) ? '&' . POST_USERS_URL . '=' . $user_id : '';
		header('Location: ' . append_sid("login.$phpEx?redirect=$redirect", true));
	}
	
	if( !$board_config['points_donate'] )
	{
		message_die(GENERAL_MESSAGE, $lang['Points_user_donation_off']);
	}
	
	if( isset($HTTP_POST_VARS['submit']) )
	{
		if( !empty($HTTP_POST_VARS['username']) )
		{
			$user_id = get_userid_from_name($HTTP_POST_VARS['username']);

			if( empty($user_id) )
			{
				$error = true;
				$error_msg = $lang['No_such_user'];
			}
			
			if( $user_id == $userdata['user_id'] )
			{
				$error = true;
				$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . sprintf($lang['Points_cant_donate_self'], $board_config['points_name']);
			}
		}
		else
		{
			$error = true;
			$error_msg = $lang['Points_no_username'];
		}

		if( isset($error) )
		{
			$template->set_filenames(array(
				'reg_header' => 'error_body.tpl')
			);
			$template->assign_vars(array(
				'ERROR_MESSAGE' => $error_msg)
			);
			$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
		}
		else
		{
			$amount = abs( intval($HTTP_POST_VARS['amount']) );
			$from_points = get_user_points($userdata['user_id']);
			
			if( $amount > $from_points )
			{
				message_die(GENERAL_MESSAGE, sprintf($lang['Points_cant_donate'], $board_config['points_name']));
			}
			
			$sql = "UPDATE " . USERS_TABLE . "
					SET user_points = user_points + $amount
					WHERE user_id = $user_id";
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Could not update user's points", '', __LINE__, __FILE__, $sql);
			}
			
			$sql = "UPDATE " . USERS_TABLE . "
					SET user_points = user_points - $amount
					WHERE user_id = " . $userdata['user_id'];
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Could not update user's points", '', __LINE__, __FILE__, $sql);
			}

			$loc = ( !empty($HTTP_POST_VARS['location']) ) ? $HTTP_POST_VARS['location'] : append_sid("pointscp.$phpEx?mode=donate");

			$template->assign_vars(array(
				'META' => '<meta http-equiv="refresh" content="3;url=' . $loc . '">')
			);

			$msg = $lang['Points_thanks_donation'] . '<br /><br />' . sprintf($lang['Click_return_points_donate'], '<a href="' . append_sid("pointscp.$phpEx?mode=donate") . '">', '</a> ') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
			message_die(GENERAL_MESSAGE, $msg);
		}
	}

	$s_username = ( !empty($user_id) ) ? get_username_from_id($user_id) : '';
	$location = ( empty($HTTP_POST_VARS['location']) ) ? $HTTP_SERVER_VARS['HTTP_REFERER'] : $location;
	$s_hidden_fields = '<input type="hidden" name="location" value="' . $location . '">';

	$template->assign_vars(array(
		'L_FIND_USERNAME' => $lang['Find_username'],
		'L_SUBMIT' => $lang['Submit'],
		'L_RESET' => $lang['Reset'],
		'L_POINTS_TITLE' => $lang['Points_donation'],
		'L_DONATE_TO' => sprintf($lang['Points_donate_to'], $board_config['points_name']),
		'L_AMOUNT' => $lang['Points_amount'],
		'L_AMOUNT_GIVE' => sprintf($lang['Points_give'], $board_config['points_name']),
		
		'USERNAME' => $s_username,
		'S_HIDDEN_FIELDS' => $s_hidden_fields,
		'S_POST_ACTION' => append_sid("pointscp.$phpEx?mode=donate", true),
		'U_SEARCH_USER' => append_sid("search.$phpEx?mode=searchuser"))
	);
	$template->assign_block_vars('switch_points_donate', array());
}
else
{
	if ( !$userdata['session_logged_in'] )
	{
		$redirect = "pointscp.$phpEx";
		$redirect .= ( isset($user_id) ) ? '&user_id=' . $user_id : '';
		header('Location: ' . append_sid("login.$phpEx?redirect=$redirect", true));
	}
	
	$is_auth = array(ADMIN);
	if( in_array($userdata['user_level'], $is_auth) == false )
	{
		message_die(GENERAL_MESSAGE, $lang['Points_not_admin']);
	}
	
	if( isset($HTTP_POST_VARS['submit']) )
	{
		if( !empty($HTTP_POST_VARS['username']) )
		{
			$user_id = get_userid_from_name($HTTP_POST_VARS['username']);

			if( empty($user_id) )
			{
				$error = true;
				$error_msg = $lang['No_such_user'];
			}
		}
		else
		{
			$error = true;
			$error_msg .= $lang['Points_no_username'];
		}

		if( isset($error) )
		{
			$template->set_filenames(array(
				'reg_header' => 'error_body.tpl')
			);
			$template->assign_vars(array(
				'ERROR_MESSAGE' => $error_msg)
			);
			$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
		}
		else
		{
			$amount = abs( intval($HTTP_POST_VARS['amount']) );
			$points = get_user_points($user_id);

			if( !$HTTP_POST_VARS['method'] )
			{
				if( ($points - $amount) < 0 )
				{
					message_die(GENERAL_MESSAGE, sprintf($lang['Points_cant_take'], $board_config['points_name']));
				}
			}

			$method_sql = ( $HTTP_POST_VARS['method'] ) ? '+' : '-';
			$sql = "UPDATE " . USERS_TABLE . "
					SET user_points = user_points $method_sql $amount
					WHERE user_id = $user_id";
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Could not update user's points", '', __LINE__, __FILE__, $sql);
			}

			$loc = ( isset($HTTP_POST_VARS['location']) && !empty($HTTP_POST_VARS['location']) ) ? $HTTP_POST_VARS['location'] : append_sid("pointscp.$phpEx?mode=donate");
			
			$template->assign_vars(array(
				'META' => '<meta http-equiv="refresh" content="3;url=' . $loc . '">')
			);

			$msg = sprintf($lang['Points_user_updated'], $board_config['points_name']) . '<br /><br />' . sprintf($lang['Click_return_pointscp'], '<a href="' . append_sid("pointscp.$phpEx") . '">', '</a> ') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
			message_die(GENERAL_MESSAGE, $msg);
		}
	}

	$s_username = ( !empty($user_id) ) ? get_username_from_id($user_id) : '';
	$location = ( !isset($HTTP_POST_VARS['location']) ) ? $HTTP_SERVER_VARS['HTTP_REFERER'] : $location;
	$s_hidden_fields = '<input type="hidden" name="location" value="' . $location . '">';

	$template->assign_vars(array(
		'L_FIND_USERNAME' => $lang['Find_username'],
		'L_ADD' => $lang['Add'],
		'L_SUBTRACT' => $lang['Subtract'],
		'L_SUBMIT' => $lang['Submit'],
		'L_RESET' => $lang['Reset'],
		'L_POINTS_TITLE' => $lang['Points_cp'],
		'L_AMOUNT' => $lang['Points_amount'],
		'L_AMOUNT_GIVE_TAKE' => sprintf($lang['Points_give_take'], $board_config['points_name']),
		'L_METHOD' => $lang['Points_method'],
		'L_ADD_SUBTRACT' => sprintf($lang['Points_add_subtract'], $board_config['points_name']),
	 
		'USERNAME' => $s_username,
		'S_HIDDEN_FIELDS' => $s_hidden_fields,
		'S_POST_ACTION' => append_sid("pointscp.$phpEx", true),
		'U_SEARCH_USER' => append_sid("search.$phpEx?mode=searchuser"))
	);
	$template->assign_block_vars('switch_points_cp', array());
}

//
// Start output of page
//
$page_title	= $lang['Points_sys'];
include($phpbb_root_path . 'includes/page_header.' . $phpEx);

//
// Generate the page
//
$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.' . $phpEx);

?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?