⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memcp.php

📁 Discuz功能源码(开源)
💻 PHP
📖 第 1 页 / 共 3 页
字号:

	if($creditspolicy['promotion_visit'] || $creditspolicy['promotion_register']) {
		$promotion_visit = $promotion_register = $space = '';
		foreach(array('promotion_visit', 'promotion_register') as $val) {
			if(!empty($creditspolicy[$val]) && is_array($creditspolicy[$val])) {
				foreach($creditspolicy[$val] as $id => $policy) {
					$$val .= $space.$extcredits[$id]['title'].' +'.$policy;
					$space = ' ';
				}
			}
		}
	}

	if(submitcheck('transfersubmit')) {
		if($transferstatus) {
			if(!submitcheck('confirm')) {

				$to = $db->result_first("SELECT username FROM {$tablepre}members WHERE username='$to'");
				include template('memcp_credits_action');

			} else {

				$amount = intval($amount);

				require_once DISCUZ_ROOT.'./uc_client/client.php';
				$ucresult = uc_user_login($discuz_user, $password);
				list($tmp['uid']) = daddslashes($ucresult);

				if($tmp['uid'] <= 0) {
					showmessage('credits_password_invalid');
				} elseif($amount <= 0) {
					showmessage('credits_transaction_amount_invalid');
				} elseif(${'extcredits'.$creditstrans} - $amount < ($minbalance = $transfermincredits)) {
					showmessage('credits_balance_insufficient');
				} elseif(!($netamount = floor($amount * (1 - $creditstax)))) {
					showmessage('credits_net_amount_iszero');
				}

				$member = $db->fetch_first("SELECT uid, username FROM {$tablepre}members WHERE username='$to'");
				if(!$member) {
					showmessage('credits_transfer_send_nonexistence');
				} elseif($member['uid'] == $discuz_uid) {
					showmessage('credits_transfer_self');
				}

				$creditsarray[$creditstrans] = -$amount;
				updatecredits($discuz_uid, $creditsarray);
				$db->query("UPDATE {$tablepre}members SET extcredits$creditstrans=extcredits$creditstrans+'$netamount' WHERE uid='$member[uid]'");
				$db->query("INSERT INTO {$tablepre}creditslog (uid, fromto, sendcredits, receivecredits, send, receive, dateline, operation)
					VALUES ('$discuz_uid', '".addslashes($member['username'])."', '$creditstrans', '$creditstrans', '$amount', '0', '$timestamp', 'TFR'),
					('$member[uid]', '$discuz_user', '$creditstrans', '$creditstrans', '0', '$netamount', '$timestamp', 'RCV')");

				if(!empty($transfermessage)) {
					$transfermessage = stripslashes($transfermessage);
					$transfertime = gmdate($GLOBALS['_DCACHE']['settings']['dateformat'].' '.$GLOBALS['_DCACHE']['settings']['timeformat'], $timestamp + $timeoffset * 3600);
					sendpm($member['uid'], 'transfer_subject', 'transfer_message', 0);
				}

				showmessage('credits_transaction_succeed', '', 1);
			}
		} else {
			showmessage('action_closed', NULL, 'HALTED');
		}

	} elseif(submitcheck('exchangesubmit')) {

		if(($exchangestatus || $outextcredits) && $outextcredits[$tocredits] || $extcredits[$fromcredits]['ratio'] && $extcredits[$tocredits]['ratio']) {
			if(!submitcheck('confirm')) {

				$outexange = strexists($tocredits, '|');
				if($outexange) {
					$netamount = floor($exchangeamount * $outextcredits[$tocredits]['ratiosrc'][${'fromcredits_'.$outi}] / $outextcredits[$tocredits]['ratiodesc'][${'fromcredits_'.$outi}]);
					$fromcredits = ${'fromcredits_'.$outi};
				} else {
					if($extcredits[$tocredits]['ratio'] < $extcredits[$fromcredits]['ratio']) {
						$netamount = ceil($exchangeamount * $extcredits[$tocredits]['ratio'] / $extcredits[$fromcredits]['ratio'] * (1 + $creditstax));
					} else {
						$netamount = floor($exchangeamount * $extcredits[$tocredits]['ratio'] / $extcredits[$fromcredits]['ratio'] * (1 + $creditstax));
					}
				}

				include template('memcp_credits_action');

			} else {

				if(!$outexange && !$extcredits[$tocredits]['ratio']) {
					showmessage('credits_exchange_invalid');
				}

				$amount = intval($amount);
				if($outexange) {
					$netamount = floor($amount * $outextcredits[$tocredits]['ratiosrc'][$fromcredits] / $outextcredits[$tocredits]['ratiodesc'][$fromcredits]);
				} else {
					if($extcredits[$tocredits]['ratio'] < $extcredits[$fromcredits]['ratio']) {
						$netamount = ceil($amount * $extcredits[$tocredits]['ratio'] / $extcredits[$fromcredits]['ratio'] * (1 + $creditstax));
					} else {
						$netamount = floor($amount * $extcredits[$tocredits]['ratio'] / $extcredits[$fromcredits]['ratio'] * (1 + $creditstax));
					}
				}

				require_once DISCUZ_ROOT.'./uc_client/client.php';
				$ucresult = uc_user_login($discuz_user, $password);
				list($tmp['uid']) = daddslashes($ucresult);

				if($tmp['uid'] <= 0) {
					showmessage('credits_password_invalid');
				} elseif($fromcredits == $tocredits) {
					showmessage('credits_exchange_invalid');
				} elseif($amount <= 0) {
					showmessage('credits_transaction_amount_invalid');
				} elseif(${'extcredits'.$fromcredits} - $netamount < ($minbalance = $exchangemincredits)) {
					showmessage('credits_balance_insufficient');
				} elseif(!$outexange && !$netamount) {
					showmessage('credits_net_amount_iszero');
				}
				if(!$extcredits[$fromcredits]['allowexchangeout']) {
					showmessage('extcredits_disallowexchangeout');
				}
				if(!$outexange && !$extcredits[$tocredits]['allowexchangein']) {
					showmessage('extcredits_disallowexchangein');
				}

				if(!$outexange) {
					$creditsarray[$fromcredits] = -$netamount;
					$creditsarray[$tocredits] = $amount;
					updatecredits($discuz_uid, $creditsarray);
				} else {
					if(!array_key_exists($fromcredits, $outextcredits[$tocredits]['creditsrc'])) {
						showmessage('extcredits_dataerror', NULL, 'HALTED');
					}
					list($toappid, $tocredits) = explode('|', $tocredits);
					$ucresult = uc_credit_exchange_request($discuz_uid, $fromcredits, $tocredits, $toappid, $amount);
					if(!$ucresult) {
						showmessage('extcredits_dataerror', NULL, 'HALTED');
					}
					$creditsarray[$fromcredits] = -$netamount;
					updatecredits($discuz_uid, $creditsarray);
					$netamount = $amount;
					$amount = $tocredits = 0;
				}

				$db->query("INSERT INTO {$tablepre}creditslog (uid, fromto, sendcredits, receivecredits, send, receive, dateline, operation)
					VALUES ('$discuz_uid', '$discuz_user', '$fromcredits', '$tocredits', '$netamount', '$amount', '$timestamp', 'EXC')");

				showmessage('credits_transaction_succeed', '', 1);
			}
		} else {
			showmessage('action_closed', NULL, 'HALTED');
		}

	} elseif(submitcheck('addfundssubmit')) {

		if($ec_ratio) {
			if(!submitcheck('confirm')) {

				$price = round(($addfundamount / $ec_ratio * 100) / 100, 1);
				include template('memcp_credits_action');

			} else {

				include language('misc');
				$amount = intval($amount);
				if(!$amount || ($ec_mincredits && $amount < $ec_mincredits) || ($ec_maxcredits && $amount > $ec_maxcredits)) {
					showmessage('credits_addfunds_amount_invalid');
				}

				if($db->result_first("SELECT COUNT(*) FROM {$tablepre}orders WHERE uid='$discuz_uid' AND submitdate>='$timestamp'-180 LIMIT 1")) {
					showmessage('credits_addfunds_ctrl');
				}

				if($ec_maxcreditspermonth) {
					$query = $db->query("SELECT SUM(amount) FROM {$tablepre}orders WHERE uid='$discuz_uid' AND submitdate>='$timestamp'-2592000 AND status IN (2, 3)");
					if(($db->result($query, 0)) + $amount > $ec_maxcreditspermonth) {
						showmessage('credits_addfunds_toomuch');
					}
				}

				$price = round(($amount / $ec_ratio * 100) / 100, 1);
				$orderid = '';

				//$apitype = 'tenpay';
				require_once DISCUZ_ROOT.'./include/trade.func.php';
				$requesturl = credit_payurl($price, $orderid);

				$query = $db->query("SELECT orderid FROM {$tablepre}orders WHERE orderid='$orderid'");
				if($db->num_rows($query)) {
					showmessage('credits_addfunds_order_invalid');
				}

				$db->query("INSERT INTO {$tablepre}orders (orderid, status, uid, amount, price, submitdate)
					VALUES ('$orderid', '1', '$discuz_uid', '$amount', '$price', '$timestamp')");

				showmessage('credits_addfunds_succeed', '', 1);

			}
		} else {
			showmessage('action_closed', NULL, 'HALTED');
		}

	} else {

		$extcredits_exchange = array();

		if(!empty($extcredits)) {
			foreach($extcredits as $key => $value) {
				if($value['allowexchangein'] || $value['allowexchangeout']) {
					$extcredits_exchange['extcredits'.$key] = array('title' => $value['title'], 'unit' => $value['unit']);
				}
			}
		}

		include template('memcp_credits');

	}

} elseif($action == 'creditslog') {

	if($operation == 'paymentlog') {

		$page = max(1, intval($page));
		$start_limit = ($page - 1) * $tpp;

		$query = $db->query("SELECT COUNT(*) FROM {$tablepre}paymentlog WHERE uid='$discuz_uid'");
		$multipage = multi($db->result($query, 0), $tpp, $page, "memcp.php?action=creditslog&amp;operation=paymentlog");
		$totalamount = $db->result($query, 1);

		$loglist = array();
		$query = $db->query("SELECT p.*, f.fid, f.name, t.subject, t.author, t.dateline AS tdateline FROM {$tablepre}paymentlog p
			LEFT JOIN {$tablepre}threads t ON t.tid=p.tid
			LEFT JOIN {$tablepre}forums f ON f.fid=t.fid
			WHERE p.uid='$discuz_uid' ORDER BY p.dateline DESC
			LIMIT $start_limit, $tpp");
		while($log = $db->fetch_array($query)) {
			$log['authorenc'] = rawurlencode($log['authorenc']);
			$log['dateline'] = dgmdate("$dateformat $timeformat", $log['dateline'] + $timeoffset * 3600);
			$log['tdateline'] = dgmdate("$dateformat $timeformat", $log['tdateline'] + $timeoffset * 3600);
			$loglist[] = $log;
		}

		include template('memcp_credits_log');

	} elseif($operation == 'incomelog') {

		$page = max(1, intval($page));
		$start_limit = ($page - 1) * $tpp;

		$query = $db->query("SELECT COUNT(*) FROM {$tablepre}paymentlog WHERE authorid='$discuz_uid'");
		$multipage = multi($db->result($query, 0), $tpp, $page, "memcp.php?action=creditslog&amp;operation=incomelog");

		$loglist = array();
		$query = $db->query("SELECT p.*, m.username, f.fid, f.name, t.subject, t.dateline AS tdateline FROM {$tablepre}paymentlog p
			LEFT JOIN {$tablepre}threads t ON t.tid=p.tid
			LEFT JOIN {$tablepre}forums f ON f.fid=t.fid
			LEFT JOIN {$tablepre}members m ON m.uid=p.uid
			WHERE p.authorid='$discuz_uid' ORDER BY p.dateline DESC
			LIMIT $start_limit, $tpp");
		while($log = $db->fetch_array($query)) {
			$log['dateline'] = dgmdate("$dateformat $timeformat", $log['dateline'] + $timeoffset * 3600);
			$log['tdateline'] = dgmdate("$dateformat $timeformat", $log['tdateline'] + $timeoffset * 3600);
			$loglist[] = $log;
		}

		include template('memcp_credits_log');

	} elseif($operation == 'attachpaymentlog') {

		$page = max(1, intval($page));
		$start_limit = ($page - 1) * $tpp;

		$query = $db->query("SELECT COUNT(*) FROM {$tablepre}attachpaymentlog WHERE uid='$discuz_uid'");
		$multipage = multi($db->result($query, 0), $tpp, $page, "memcp.php?action=creditslog&amp;operation=attachpaymentlog");

		$loglist = array();
		$query = $db->query("SELECT ap.*, a.filename, a.pid, a.dateline as adateline, t.subject, t.tid, m.username FROM {$tablepre}attachpaymentlog ap
			LEFT JOIN {$tablepre}attachments a ON a.aid=ap.aid
			LEFT JOIN {$tablepre}threads t ON t.tid=a.tid
			LEFT JOIN {$tablepre}members m ON m.uid=ap.authorid
			WHERE ap.uid='$discuz_uid' ORDER BY ap.dateline DESC
			LIMIT $start_limit, $tpp");
		while($log = $db->fetch_array($query)) {
			$log['dateline'] = dgmdate("$dateformat $timeformat", $log['dateline'] + $timeoffset * 3600);
			$log['adateline'] = dgmdate("$dateformat $timeformat", $log['adateline'] + $timeoffset * 3600);
			$loglist[] = $log;
		}

		include template('memcp_credits_log');


	} elseif($operation == 'attachincomelog') {

		$page = max(1, intval($page));
		$start_limit = ($page - 1) * $tpp;

		$query = $db->query("SELECT COUNT(*) FROM {$tablepre}attachpaymentlog WHERE authorid='$discuz_uid'");
		$multipage = multi($db->result($query, 0), $tpp, $page, "memcp.php?action=creditslog&amp;operation=attachincomelog");
		$totalamount = $db->result($query, 1);

		$loglist = array();

⌨️ 快捷键说明

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