$value) { if($value['allowexchangein'] || $value['allowexchangeout']) { $extcredits_exchange['extcredits'.$key] = array('title' => $value['title'], 'unit' => $value['unit']); } } } $count = C::t('common_credit_log')->count_by_uid($_G['uid']); if($count) { loadcache(array('magics')); foreach(C::t('common_credit_log')->fetch_all_by_uid($_G['uid'], 0, 10) as $log) { $credits = array(); $havecredit = false; $maxid = $minid = 0; foreach($_G['setting']['extcredits'] as $id => $credit) { if($log['extcredits'.$id]) { $havecredit = true; if($log['operation'] == 'RPZ') { $credits[] = $credit['title'].lang('spacecp', 'credit_update_reward_clean'); } else { $credits[] = $credit['title'].' '.($log['extcredits'.$id] > 0 ? '+' : '').$log['extcredits'.$id].''; } if($log['operation'] == 'CEC' && !empty($log['extcredits'.$id])) { if($log['extcredits'.$id] > 0) { $log['maxid'] = $id; } elseif($log['extcredits'.$id] < 0) { $log['minid'] = $id; } } } } if(!$havecredit) { continue; } $log['credit'] = implode('
', $credits); if(in_array($log['operation'], array('RTC', 'RAC', 'STC', 'BTC', 'ACC', 'RCT', 'RCA', 'RCB'))) { $tids[$log['relatedid']] = $log['relatedid']; } elseif(in_array($log['operation'], array('SAC', 'BAC'))) { $aids[$log['relatedid']] = $log['relatedid']; } elseif(in_array($log['operation'], array('PRC', 'RSC'))) { $pids[$log['relatedid']] = $log['relatedid']; } elseif(in_array($log['operation'], array('TFR', 'RCV'))) { $uids[$log['relatedid']] = $log['relatedid']; } elseif($log['operation'] == 'TRC') { $taskids[$log['relatedid']] = $log['relatedid']; } $loglist[] = $log; } $otherinfo = getotherinfo($aids, $pids, $tids, $taskids, $uids); } $navtitle = lang('core', 'title_credit'); $creditsformulaexp = str_replace('*', 'X', $_G['setting']['creditsformulaexp']); } elseif ($_GET['op'] == 'buy') { if((!$_G['setting']['ec_ratio'] || (!$_G['setting']['ec_tenpay_opentrans_chnid'] && !$_G['setting']['ec_tenpay_bargainor'] && !$_G['setting']['ec_account'])) && !$_G['setting']['card']['open'] ) { showmessage('action_closed', NULL); } if(submitcheck('addfundssubmit')) { if(!isset($_GET['bank_type'])) { showmessage('memcp_credits_addfunds_msg_notype', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } $apitype = is_numeric($_GET['bank_type']) ? 'tenpay' : $_GET['bank_type']; if($apitype == 'card') { list($seccodecheck) = seccheck('card'); if($seccodecheck) { if(!check_seccode($_GET['seccodeverify'], $_GET['seccodehash'])) { showmessage('submit_seccode_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } } if(!$_POST['cardid']) { showmessage('memcp_credits_card_msg_cardid_incorrect', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if(!($card = C::t('common_card')->fetch($_POST['cardid']))) { showmessage('memcp_credits_card_msg_card_unfined', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true, 'extrajs' => '')); } else { if($card['status'] == 2) { showmessage('memcp_credits_card_msg_used', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if($card['cleardateline'] < TIMESTAMP) { showmessage('memcp_credits_card_msg_cleardateline_early', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } C::t('common_card')->update($card['id'], array('status' => 2, 'uid' => $_G['uid'], 'useddateline' => $_G['timestamp'])); updatemembercount($_G[uid], array($card['extcreditskey'] => $card['extcreditsval']), true, 'CDC', 1); showmessage('memcp_credits_card_msg_succeed', 'home.php?mod=spacecp&ac=credit&op=base', array('extcreditstitle' => $_G['setting']['extcredits'][$card['extcreditskey']]['title'], 'extcreditsval' => $card['extcreditsval']), array('showdialog' => 1, 'alert' => 'right', 'showmsg' => true, 'locationtime' => true)); } } else { $amount = intval($_GET['addfundamount']); if(!$amount) { showmessage('memcp_credits_addfunds_msg_incorrect', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } $language = lang('forum/misc'); if(($_G['setting']['ec_mincredits'] && $amount < $_G['setting']['ec_mincredits']) || ($_G['setting']['ec_maxcredits'] && $amount > $_G['setting']['ec_maxcredits'])) { showmessage('credits_addfunds_amount_invalid', '', array('ec_maxcredits' => $_G['setting']['ec_maxcredits'], 'ec_mincredits' => $_G['setting']['ec_mincredits']), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if($apitype == 'card' && C::t('forum_order')->count_by_search($_G['uid'], null, null, null, null, null, null, $_G['timestamp'] - 180)) { showmessage('credits_addfunds_ctrl', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if($_G['setting']['ec_maxcreditspermonth']) { if(C::t('forum_order')->sum_amount_by_uid_submitdate_status($_G['uid'], $_G['timestamp'] - 2592000, array(2, 3)) + $amount > $_G['setting']['ec_maxcreditspermonth']) { showmessage('credits_addfunds_toomuch', '', array('ec_maxcreditspermonth' => $_G['setting']['ec_maxcreditspermonth']), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } } $price = round(($amount / $_G['setting']['ec_ratio'] * 100) / 100, 2); $orderid = ''; require_once libfile('function/trade'); $requesturl = credit_payurl($price, $orderid, $_GET['bank_type']); if(C::t('forum_order')->fetch($orderid)) { showmessage('credits_addfunds_order_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } C::t('forum_order')->insert(array( 'orderid' => $orderid, 'status' => '1', 'uid' => $_G['uid'], 'amount' => $amount, 'price' => $price, 'submitdate' => $_G['timestamp'], )); include template('common/header_ajax'); echo '
'; include template('common/footer_ajax'); dexit(); } } else { if($_G['setting']['card']['open'] && $_G['setting']['seccodestatus'] & 16) { $seccodecheck = 1; $secqaacheck = 0; } } } elseif ($_GET['op'] == 'transfer') { if(!($_G['setting']['transferstatus'] && $_G['group']['allowtransfer'])) { showmessage('action_closed', NULL); } if(submitcheck('transfersubmit')) { if($_GET['to'] == $_G['username']) { showmessage('memcp_credits_transfer_msg_self_incorrect', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } $amount = intval($_GET['transferamount']); if($amount <= 0) { showmessage('credits_transaction_amount_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } elseif(getuserprofile('extcredits'.$_G['setting']['creditstransextra'][9]) - $amount < ($minbalance = $_G['setting']['transfermincredits'])) { showmessage('credits_transfer_balance_insufficient', '', array('title' => $_G['setting']['extcredits'][$_G['setting']['creditstransextra'][9]]['title'], 'minbalance' => $minbalance), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } elseif(!($netamount = floor($amount * (1 - $_G['setting']['creditstax'])))) { showmessage('credits_net_amount_iszero', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } $to = C::t('common_member')->fetch_by_username($_GET['to']); if(!$to) { showmessage('memcp_credits_transfer_msg_user_incorrect', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } loaducenter(); $ucresult = uc_user_login(addslashes($_G['username']), $_GET['password']); list($tmp['uid']) = $ucresult; if($tmp['uid'] <= 0) { showmessage('credits_password_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } updatemembercount($_G['uid'], array($_G['setting']['creditstransextra'][9] => -$amount), 1, 'TFR', $to['uid']); updatemembercount($to['uid'], array($_G['setting']['creditstransextra'][9] => $netamount), 1, 'RCV', $_G['uid']); if(!empty($_GET['transfermessage'])) { $transfermessage = dhtmlspecialchars($_GET['transfermessage']); notification_add($to['uid'], 'credit', 'transfer', array('credit' => $_G['setting']['extcredits'][$_G['setting']['creditstransextra'][9]]['title'].' '.$netamount.' '.$_G['setting']['extcredits'][$_G['setting']['creditstransextra'][9]]['unit'], 'transfermessage' => $transfermessage)); } showmessage('credits_transfer_succeed', 'home.php?mod=spacecp&ac=credit&op=transfer', array(), array('showdialog' => 1, 'showmsg' => true, 'locationtime' => true)); } } elseif ($_GET['op'] == 'exchange') { if(!$_G['setting']['exchangestatus']) { showmessage('action_closed', NULL); } $_CACHE['creditsettings'] = array(); if(file_exists(DISCUZ_ROOT.'/uc_client/data/cache/creditsettings.php')) { include_once(DISCUZ_ROOT.'/uc_client/data/cache/creditsettings.php'); } if(submitcheck('exchangesubmit')) { $tocredits = $_GET['tocredits']; $fromcredits = $_GET['fromcredits']; $exchangeamount = $_GET['exchangeamount']; $outexange = strexists($tocredits, '|'); if($outexange && !empty($_GET['outi'])) { $fromcredits = $_GET['fromcredits_'.$_GET['outi']]; } if($fromcredits == $tocredits) { showmessage('memcp_credits_exchange_msg_num_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if($outexange) { $netamount = floor($exchangeamount * $_CACHE['creditsettings'][$tocredits]['ratiosrc'][$fromcredits] / $_CACHE['creditsettings'][$tocredits]['ratiodesc'][$fromcredits]); } else { if($_G['setting']['extcredits'][$tocredits]['ratio'] < $_G['setting']['extcredits'][$fromcredits]['ratio']) { $netamount = ceil($exchangeamount * $_G['setting']['extcredits'][$tocredits]['ratio'] / $_G['setting']['extcredits'][$fromcredits]['ratio'] * (1 + $_G['setting']['creditstax'])); } else { $netamount = floor($exchangeamount * $_G['setting']['extcredits'][$tocredits]['ratio'] / $_G['setting']['extcredits'][$fromcredits]['ratio'] * (1 + $_G['setting']['creditstax'])); } } if(!$outexange && !$_G['setting']['extcredits'][$tocredits]['ratio']) { showmessage('credits_exchange_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if(!$outexange && !$_G['setting']['extcredits'][$fromcredits]['allowexchangeout']) { showmessage('extcredits_disallowexchangeout', '', array('credittitle' => $_G['setting']['extcredits'][$fromcredits]['title']), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if(!$outexange && !$_G['setting']['extcredits'][$tocredits]['allowexchangein']) { showmessage('extcredits_disallowexchangein', '', array('credittitle' => $_G['setting']['extcredits'][$tocredits]['title']), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if(!$netamount) { showmessage('memcp_credits_exchange_msg_balance_insufficient', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } elseif($exchangeamount <= 0) { showmessage('credits_transaction_amount_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } elseif(getuserprofile('extcredits'.$fromcredits) - $netamount < ($minbalance = $_G['setting']['exchangemincredits'])) { showmessage('credits_exchange_balance_insufficient', '', array('title' => $_G['setting']['extcredits'][$fromcredits]['title'], 'minbalance' => $minbalance), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } loaducenter(); $ucresult = uc_user_login(addslashes($_G['username']), $_GET['password']); list($tmp['uid']) = $ucresult; if($tmp['uid'] <= 0) { showmessage('credits_password_invalid', '', array(), array('showdialog' => 1, 'showmsg' => true, 'closetime' => true)); } if(!$outexange) { updatemembercount($_G['uid'], array($fromcredits => -$netamount, $tocredits => $exchangeamount), 1, 'CEC', $_G['uid']); } else { if(!array_key_exists($fromcredits, $_CACHE['creditsettings'][$tocredits]['creditsrc'])) { showmessage('extcredits_dataerror', NULL); } list($toappid, $tocredits) = explode('|', $tocredits); $ucresult = uc_credit_exchange_request($_G['uid'], $fromcredits, $tocredits, $toappid, $exchangeamount); if(!$ucresult) { showmessage('extcredits_dataerror', NULL); } updatemembercount($_G['uid'], array($fromcredits => -$netamount), 1, 'ECU', $_G['uid']); $netamount = $amount; $amount = $tocredits = 0; } showmessage('credits_transaction_succeed', 'home.php?mod=spacecp&ac=credit&op=exchange', array(), array('showdialog' => 1, 'showmsg' => true, 'locationtime' => true)); } } else { $wheresql = ''; $list = array(); $rid = intval($_GET['rid']); if($_GET['rid']) { $wheresql = " AND rid='$rid'"; } require_once libfile('function/forumlist'); $select = forumselect(false, 0, $_GET['fid']); $keys = array_keys($_G['setting']['extcredits']); foreach(C::t('common_credit_rule')->fetch_all_by_rid($rid) as $value) { if(!helper_access::check_module('doing') && $value['action'] == 'doing') { continue; } elseif(!helper_access::check_module('blog') && $value['action'] == 'publishblog') { continue; } elseif(!helper_access::check_module('wall') && in_array($value['action'], array('guestbook', 'getguestbook'))) { continue; } if(empty($_GET['fid']) || in_array($value['action'], array('digest', 'post', 'reply', 'getattach', 'postattach'))) { if(checkvalue($value, $keys)) { $list[$value['action']] = $value; } } } if(!empty($_GET['fid'])) { $_GET['fid'] = intval($_GET['fid']); $foruminfo = C::t('forum_forumfield')->fetch($_GET['fid']); $flist = dunserialize($foruminfo['creditspolicy']); foreach($flist as $action => $value) { $list[$value['action']] = $value; } } } include_once template("home/spacecp_credit_base"); function checkvalue($value, $creditids) { $havevalue = false; foreach($creditids as $key) { if($value['extcredits'.$key]) { $havevalue = true; break; } } return $havevalue; } ?>