예제 #1
0
 foreach (array(0 => 'next', 1 => 'currency', 2 => 'alipay', 3 => 'tenpay') as $k => $v) {
     $cfg_paymode & 1 << $k && ($k < 2 || !in_array('', $pays[$k])) && ($pmodearr[$k] = lang("pay{$v}"));
 }
 empty($pmodearr) && mcmessage('nopaymode');
 if (submitcheck('borderpay')) {
     //确认付款
     $order['state'] == 1 || !$order['state'] && $cfg_ordermode || mcmessage('cheordcanmod', $forward);
     empty($ordernew['paymode']) && @$ordernew['paymode'] !== '0' && mcmessage('paymodecerr', M_REFERER);
     empty($pmodearr[$ordernew['paymode']]) && mcmessage('paymodeerr', M_REFERER);
     $sqlstr = "state=-1,paymode={$ordernew['paymode']}";
     //-1为订单完成状态
     if ($ordernew['paymode'] == 1) {
         //现金帐户
         $curuser->info['currency0'] < $order['totalfee'] && mcmessage('pay_no_money');
         $curuser->updatecrids(array(0 => -$order['totalfee']), 1, lang('log_order_pay', $order['ordersn']));
         $order['tomid'] && $user->updatecrids(array(0 => $order['totalfee']), 1, lang('log_order_rev', $order['ordersn']));
         $sqlstr .= ",payed={$order['totalfee']}";
         $db->query("UPDATE {$tblprefix}orders SET {$sqlstr},updatedate='{$timestamp}' WHERE oid='{$oid}'");
         $query = $db->query("SELECT aid,tocid as cid,price,nums FROM {$tblprefix}purchases WHERE oid='{$oid}'");
         $nums = 0;
         $aedit = new cls_arcedit();
         while ($row = $db->fetch_array($query)) {
             $nums += $row['nums'];
             if ($row['cid']) {
                 //商家商品
             } else {
                 //网站商品
                 //				$db->query("UPDATE {$tblprefix}archives SET orders=$row[nums],ordersum=$sum WHERE aid=$row[aid]");
                 $aedit->init();
                 $aedit->set_aid($row['aid']);
                 $aedit->arc_nums('orders', $row['nums']);
예제 #2
0
        }
        $ispre = 1;
    } else {
        //自动扣值,当前会员扣值及向出售者支付积分
        if (!$curuser->crids_enough($crids['total'])) {
            message(lang('subarcwantpaycur') . $cridstr . lang('younosubsarchivewantenoughcur'));
        }
        $curuser->updatecrids($crids['total'], 0, lang('subscribearchive'));
        $curuser->payrecord($arc->aid, 0, $cridstr, 1);
        if (!empty($crids['sale'])) {
            $actuser = new cls_userinfo();
            $actuser->activeuser($arc->archive['mid']);
            foreach ($crids['sale'] as $k => $v) {
                $crids['sale'][$k] = -$v;
            }
            $actuser->updatecrids($crids['sale'], 1, lang('salearchive'));
            unset($actuser);
        }
    }
}
//读取缓存页面
if (!$enablestatic && $cache1circle) {
    $cachefile = htmlcac_dir($ispre ? 'pre' : 'arc', date('Ym', $arc->archive['createdate']), 1) . cac_namepre($arc->aid) . '_' . $page . '.php';
    if (is_file($cachefile) && filemtime($cachefile) > $timestamp - $cache1circle * 60) {
        mexit(read_htmlcac($cachefile));
    }
}
//分析模板来源
$tplname = $ispre ? $pretpl : arc_tplname($addno, $arc->archive['arctpls'], $arc->channel['arctpls']);
!$tplname && message('definereltem');
$arc->detail_data();
예제 #3
0
function follow_dynamic($aid = 0, $mode = 'down', $temparr = array())
{
    global $db, $tblprefix, $arc, $sptpls, $memberid, $sid, $timestamp, $cms_abs, $cache1circle, $currencys, $curuser, $templatedir, $btags, $mconfigs, $_mp, $_actid, $_midarr, $_a_vars, $_a_var, $mpnav, $mptitle;
    @extract($mconfigs, EXTR_SKIP);
    $arc->arcid($aid);
    if (empty($arc->aid)) {
        message(lang('confchoosarchi'));
    }
    !$arc->archive['checked'] && message(lang('poinarchnoch'));
    switch_cache($arc->archive['sid']);
    $sid = $arc->archive['sid'];
    if_siteclosed($sid);
    if (!arc_allow($arc->archive, 'down')) {
        message(lang('noarchivbrowpermis'));
    }
    if ($crids = $arc->arc_crids(1)) {
        //需要对当前用户扣值
        $cridstr = '';
        foreach ($crids['total'] as $k => $v) {
            $cridstr .= ($cridstr ? ',' : '') . abs($v) . $currencys[$k]['unit'] . $currencys[$k]['cname'];
        }
        $commu = read_cache('commu', 8);
        if (empty($commu['setting']['autoatm'])) {
            //不自动扣值的情况:提示出订阅链接,选择是否订阅
            message(lang('subattachwanpaycur') . $cridstr . "<br><br><a href=\"{$cms_abs}tools/subscribe.php?aid={$aid}&isatm=1\">>>" . lang('subscribe') . "</a>");
        } else {
            //自动扣值,当前会员扣值及向出售者支付积分
            if (!$curuser->crids_enough($crids['total'])) {
                message(lang('subattachwanpaycur') . $cridstr . lang('younosuatwaencur'));
            }
            $curuser->updatecrids($crids['total'], 0, lang('subsattach'));
            $curuser->payrecord($arc->aid, 1, $cridstr, 1);
            if (!empty($crids['sale'])) {
                $actuser = new cls_userinfo();
                $actuser->activeuser($arc->archive['mid']);
                foreach ($crids['sale'] as $k => $v) {
                    $crids['sale'][$k] = -$v;
                }
                $actuser->updatecrids($crids['sale'], 1, lang('saleattach'));
                unset($actuser);
            }
        }
    }
    $arc->detail_data();
    $_da =& $arc->archive;
    arc_parse($_da);
    if (empty($temparr['tmode'])) {
        if ($temp = @unserialize($_da[$temparr['tname']])) {
            $temp = @$temp[$temparr['fid']];
        }
    } else {
        $temp = @explode('#', $arc->archive[$temparr['tname']]);
    }
    $_da['url'] = view_atmurl(@$temp['remote']);
    $_da['player'] = @$temp['player'];
    unset($temp);
    empty($_da['url']) && message(lang('noattach'));
    save_nums($aid, $mode);
    //统计下载或播放数
    if (!($tplname = $sptpls[$mode])) {
        follow_notpl($mode, $_da['url'], $_da['player']);
    }
    if ($mode == 'down') {
        $auth = authcode($memberid . "\t" . $aid . "\t" . $temparr['tname'] . "\t" . $temparr['tmode'] . "\t" . $temparr['fid'], 'ENCODE');
        $_da['trueurl'] = $cms_abs . "tools/down.php?auth={$auth}&aid=" . $arc->aid . "&tname={$temparr['tname']}&tmode={$temparr['tmode']}&fid={$temparr['fid']}";
        //真实下载地址
    } elseif ($cache1circle) {
        $auth = authcode($temparr['tname'] . "\t" . $temparr['tmode'] . "\t" . $temparr['fid'], 'ENCODE');
        $cachefile = htmlcac_dir('fw', date('Ym', $arc->archive['createdate']), 1) . cac_namepre($arc->aid, $arc->archive['createdate']) . '_' . $auth . '.php';
        if (is_file($cachefile) && filemtime($cachefile) > $timestamp - $cache1circle * 60) {
            mexit(read_htmlcac($cachefile));
        }
    }
    _aenter($_da, 1, array('url', 'player'));
    @extract($btags);
    extract($_da, EXTR_OVERWRITE);
    tpl_refresh($tplname);
    @(include M_ROOT . "template/{$templatedir}/pcache/{$tplname}.php");
    $_content = ob_get_contents();
    ob_clean();
    if ($cache1circle && $mode != 'down') {
        save_htmlcac($_content, $cachefile);
    }
    mexit($_content);
}
예제 #4
0
function cms_spread($uid, $mode = 0)
{
    global $db, $tblprefix, $onlineip, $timestamp, $curuser, $m_cookie;
    if (empty($uid) && $mode == 1) {
        $uid = empty($m_cookie['spread_uid']) ? '' : $m_cookie['spread_uid'];
    } else {
        $uid = trim($uid);
    }
    if (empty($uid) || !($commu = read_cache('commu', 9)) || empty($commu['available']) || empty($commu['setting'][$mode])) {
        return;
    }
    $user = new cls_userinfo();
    $user->activeuserbyname($uid);
    if (!($mid = $user->info['mid']) || $mid == $curuser->info['mid']) {
        return;
    }
    $s =& $commu['setting'][$mode];
    $ip = ip2long($onlineip);
    $time = getdate($timestamp);
    $time = mktime(0, 0, 0, $time['mon'], $time['mday'], $time['year']);
    $record = $db->result_one("SELECT COUNT(*) FROM {$tblprefix}spreads WHERE mid='{$mid}' AND ip={$ip} AND mode={$mode} AND time>{$time}");
    if ($s['value'] && (!$s['count'] || $s['count'] > $db->result_one("SELECT COUNT(*) FROM {$tblprefix}spreads WHERE mid='{$mid}' AND time>{$time}")) && !$record) {
        $user->updatecrids(array($s['crid'] => $s['value']), 1);
    }
    $record || $db->query("INSERT INTO {$tblprefix}spreads(mid,ip,mode,time) VALUES('{$mid}',{$ip},{$mode},{$timestamp})");
    $mode ? mclearcookie('spread_uid') : msetcookie('spread_uid', $uid);
}
예제 #5
0
 }
 if (!empty($arcdeal['delete'])) {
     $db->query("DELETE FROM {$tblprefix}pays WHERE pid " . multi_str($selectid) . " AND (receivedate=0 OR transdate>0)", 'SILENT');
 } else {
     if (!empty($arcdeal['receive'])) {
         $db->query("UPDATE {$tblprefix}pays SET receivedate='" . (empty($arcreceive) ? 0 : $timestamp) . "' WHERE pid " . multi_str($selectid) . " AND transdate=0", 'SILENT');
     }
     if (!empty($arcdeal['trans'])) {
         $auser = new cls_userinfo();
         $query = $db->query("SELECT * FROM {$tblprefix}pays WHERE pid " . multi_str($selectid));
         while ($item = $db->fetch_array($query)) {
             if (!$item['amount'] || !$item['receivedate'] || $item['transdate']) {
                 continue;
             }
             $auser->activeuser($item['mid']);
             $auser->updatecrids(array(0 => $item['amount']), 1, lang('cashsav'));
             $db->query("UPDATE {$tblprefix}pays SET transdate='{$timestamp}' WHERE pid='{$item['pid']}'", 'SILENT');
             $auser->init();
         }
         unset($actuser);
     }
 }
 if (!empty($select_all)) {
     $npage++;
     if ($npage <= $pages) {
         $fromid = min($selectid);
         $transtr = '';
         $transtr .= "&select_all=1";
         $transtr .= "&pages={$pages}";
         $transtr .= "&npage={$npage}";
         $transtr .= "&barcsedit=1";
예제 #6
0
    $arc = new cls_archive();
    !$arc->arcid($aid) && cumessage('choosearchive');
    !$arc->archive['checked'] && cumessage('poinarcnoche');
    switch_cache($arc->archive['sid']);
    $sid = $arc->archive['sid'];
    $stritem = $isatm ? 'attachment' : 'archive';
    if (!($crids = $arc->arc_crids($isatm))) {
        cumessage("youalrpurchasestritem", '', $stritem);
    }
    $cridstr = '';
    foreach ($crids['total'] as $k => $v) {
        $cridstr .= ($cridstr ? ',' : '') . abs($v) . $currencys[$k]['unit'] . $currencys[$k]['cname'];
    }
    if (!$curuser->crids_enough($crids['total'])) {
        cumessage('younopurcstriwanenocurr', '', $stritem);
    }
    $curuser->updatecrids($crids['total'], 0, lang("purchasestritem", $stritem));
    $curuser->payrecord($arc->aid, $isatm, $cridstr, 1);
    if (!empty($crids['sale'])) {
        $actuser = new cls_userinfo();
        $actuser->activeuser($arc->archive['mid']);
        foreach ($crids['sale'] as $k => $v) {
            $crids['sale'][$k] = -$v;
        }
        $actuser->updatecrids($crids['sale'], 1, lang("salestritem", $stritem));
        unset($actuser);
    }
    cumessage($inajax ? 'succeed' : 'operatesucceed');
} else {
    include M_ROOT . $commu['ucadd'];
}
예제 #7
0
        if ($aedit->archive['closed'] || $aedit->archive['finishdate'] && $aedit->archive['finishdate'] < $timestamp) {
            mcmessage('questionclose', M_REFERER);
        }
        if (empty($currencynew)) {
            mcmessage('chooseanswer', M_REFERER);
        }
        $auser = new cls_userinfo();
        $sparenew = $aedit->archive['spare'];
        foreach ($currencynew as $k => $v) {
            $v = max(0, intval($v));
            $v = $sparenew > $v ? $v : max($sparenew, $v);
            $sqlstr = "checked='" . (empty($selectid[$k]) ? 0 : 1) . "'";
            if ($v) {
                $row = $db->fetch_one("SELECT * FROM {$tblprefix}answers WHERE cid={$k}");
                $auser->activeuser($row['mid']);
                $auser->updatecrids(array($row['crid'] => $v), 1, 'answer');
                $sqlstr .= ",currency=currency+{$v}";
                $sparenew -= $v;
                $auser->init();
            }
            $db->query("UPDATE {$tblprefix}answers SET {$sqlstr} WHERE cid={$k}");
        }
        unset($auser);
        $adopts = $db->result_one("SELECT COUNT(*) FROM {$tblprefix}answers WHERE aid='{$aid}' AND checked=1");
        $aedit->updatefield('adopts', $adopts, 'main');
        $aedit->updatefield('spare', $sparenew, 'sub');
        $aedit->updatedb();
        mcmessage('answereditfinish', M_REFERER);
    }
} else {
    include M_ROOT . $u_tplname;
예제 #8
0
 function showlist()
 {
     global $db, $tblprefix, $curuser, $eid, $atpp, $page, $mid, $mname, $checked, $dmode, $date1, $date2;
     if ($eid) {
         return $this->isadmin ? $this->check() : ($eid == 'new' ? $this->addnew() : $this->show());
     }
     if (!submitcheck('bextedit')) {
         if (defined('M_MCENTER')) {
             $css = array('L' => 'item2', 'R' => 'item right', 'C' => 'item');
             $membercname = lang('membercname');
             $checkstate = lang('checkstate');
         } else {
             $css = array('L' => 'txtL', 'R' => 'txtR', 'C' => 'txtC');
             $membercname = lang('member_cname');
             $checkstate = lang('check_state');
         }
         $page = !empty($page) ? max(1, intval($page)) : 1;
         submitcheck('bfilter') && ($page = 1);
         if ($this->isadmin) {
             $wheresql = ' 1=1';
             $u_lists = array('mname', 'integral', 'total', 'rate', 'checkdate', 'createdate', 'view');
         } else {
             $wheresql = " mid={$curuser->info['mid']}";
             $u_lists = array('integral', 'total', 'rate', 'checkdate', 'createdate', 'view');
         }
         $mname && ($wheresql .= " AND mname LIKE '%" . str_replace(array(' ', '*'), '%', addcslashes($mname, '%_')) . "%'");
         isset($checked) || ($checked = '-1');
         $checked != '-1' && ($wheresql .= ' AND checkdate' . ($checked ? '!' : '') . '=0');
         $datefield = $dmode ? 'checkdate' : 'createdate';
         if ($date1 && preg_match("/\\s*(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s+(\\d{1,2}):(\\d{1,2}):(\\d{1,2}))?\\s*\$/", $date1, $match)) {
             $date = mktime(empty($match[4]) ? 0 : $match[4], empty($match[5]) ? 0 : $match[5], empty($match[6]) ? 0 : $match[6], $match[2], $match[3], $match[1]);
             $date && $date > 0 && ($wheresql .= " AND {$datefield}>='{$date}'");
         }
         if ($date2 && preg_match("/\\s*(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s+(\\d{1,2}):(\\d{1,2}):(\\d{1,2}))?\\s*\$/", $date2, $match)) {
             $date = mktime(empty($match[4]) ? 24 : $match[4], empty($match[5]) ? 59 : $match[5], empty($match[6]) ? 59 : $match[6], $match[2], $match[3], $match[1]);
             $date && $date > 0 && ($wheresql .= " AND {$datefield}<='{$date}'");
         }
         echo form_str('extract_list', "?{$_SERVER['QUERY_STRING']}");
         if ($this->isadmin) {
             //搜索区块
             tabheader_e();
             echo "<tr><td colspan=\"2\" class=\"txt txtleft\">";
             //关键词固定显示
             echo $membercname . "&nbsp; <input class=\"text\" name=\"mname\" type=\"text\" value=\"{$mname}\" size=\"8\" style=\"vertical-align: middle;\">&nbsp; ";
             $checkarr = array('-1' => lang('nolimit'), '0' => lang('nocheck'), '1' => lang('checked'));
             echo "<select style=\"vertical-align: middle;\" name=\"checked\">" . makeoption($checkarr, $checked) . "</select>&nbsp; ";
             $dmodearr = array('0' => lang('needtime'), '1' => lang('checkdate'));
             echo "<select style=\"vertical-align: middle;\" name=\"dmode\">" . makeoption($dmodearr, $dmode) . "</select>&nbsp; " . "<input class=\"text\" id=\"extract_date1\" name=\"date1\" type=\"text\" value=\"{$date1}\" onclick=\"ShowCalendar(this.id);\" style=\"vertical-align: middle;width:120px\">&nbsp; -&nbsp; " . "<input class=\"text\" id=\"extract_date2\" name=\"date2\" type=\"text\" value=\"{$date2}\" onclick=\"ShowCalendar(this.id);\" style=\"vertical-align: middle;width:120px\">&nbsp; " . "<input class=\"btn\" type=\"submit\" name=\"bfilter\" id=\"bfilter\" value=\"" . lang('filter0') . "\">&nbsp;" . "</td></tr>";
             tabfooter();
         }
         $pagetmp = $page;
         do {
             $query = $db->query("SELECT * FROM {$tblprefix}extracts WHERE {$wheresql} ORDER BY {$datefield} DESC LIMIT " . ($pagetmp - 1) * $atpp . ",{$atpp}");
             $pagetmp--;
         } while (!$db->num_rows($query) && $pagetmp);
         $count = $db->result_one("SELECT count(*) FROM {$tblprefix}extracts WHERE {$wheresql}");
         $view = lang('message');
         tabheader(lang('extract_list') . ($this->isadmin ? '' : "&nbsp;[<a href=\"?{$_SERVER['QUERY_STRING']}&eid=new\" onclick=\"return floatwin('open_extractview',this)\">" . lang('submit_extract') . '</a>]'), '', '', count($u_lists) + 1);
         $cy_arr = array();
         $this->isadmin && ($cy_arr[] = '<input class="checkbox" type="checkbox" name="chkall" onclick="checkall(this.form, \'selectid\', \'chkall\')">');
         in_array('mname', $u_lists) && ($cy_arr[] = array($membercname, $css['L']));
         in_array('integral', $u_lists) && ($cy_arr[] = lang('extract_count'));
         in_array('total', $u_lists) && ($cy_arr[] = lang('extract_getcount'));
         in_array('rate', $u_lists) && ($cy_arr[] = lang('extract_discount'));
         in_array('checkdate', $u_lists) && ($cy_arr[] = lang('checkdate'));
         in_array('createdate', $u_lists) && ($cy_arr[] = lang('needtime'));
         #			in_array('delstate',$u_lists) && $cy_arr[] = lang('delstate');
         in_array('view', $u_lists) && ($cy_arr[] = $view);
         trcategory($cy_arr);
         while ($item = $db->fetch_array($query)) {
             #				$checked = $item['checked'] ? 'Y' : '-';
             #				$delete = $item['delstate'] ? 'Y' : '-';
             $checkdate = $item['checkdate'] ? date('Y-m-d', $item['checkdate']) : '-';
             $createdate = date('Y-m-d', $item['createdate']);
             $itemstr = '<tr class="txt">';
             $this->isadmin && ($itemstr .= "<td class=\"{$css['C']} w40\" ><input class=\"checkbox\" type=\"checkbox\" name=\"selectid[{$item['eid']}]\" value=\"{$item['eid']}\"></td>\n");
             in_array('mname', $u_lists) && ($itemstr .= "<td class=\"{$css['L']}\">{$item['mname']}</td>\n");
             in_array('integral', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$item['integral']}</td>\n");
             in_array('total', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$item['total']}</td>\n");
             in_array('rate', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$item['rate']}%</td>\n");
             in_array('checkdate', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$checkdate}</td>\n");
             in_array('createdate', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$createdate}</td>\n");
             #				in_array('delstate',$u_lists) && $itemstr .= "<td class=\"$css[C]\">$delete</td>\n";
             in_array('view', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\"><a href=\"?{$_SERVER['QUERY_STRING']}&eid={$item['eid']}\" onclick=\"return floatwin('open_extractview',this)\">{$view}</a></td>\n");
             $itemstr .= "</tr>\n";
             echo $itemstr;
         }
         tabfooter();
         echo multi($count, $atpp, $page, preg_replace("/[?&]page=\\d+\$|([?&])page=\\d+&/", '$1', "?{$_SERVER['QUERY_STRING']}"));
         if ($this->isadmin) {
             tabheader(lang('operate_item'));
             trbasic(lang('choose_item'), '', '<input class="checkbox" type="checkbox" name="extdeal[delete]" id="extdeal_delete" value="1"><label for="extdeal_delete" >' . lang('delete') . '</label>&nbsp;<input class="checkbox" type="checkbox" name="extdeal[check]" id="extdeal_check" value="1"><label for="extdeal_check" >' . lang('check') . '</label>&nbsp;', '');
             tabfooter('bextedit');
         }
     } elseif ($this->isadmin) {
         global $selectid, $extdeal, $timestamp;
         if (function_exists('mcmessage')) {
             $message = 'mcmessage';
             $empty_item = 'selectoperateitem';
         } else {
             $message = 'amessage';
             $empty_item = 'selectoperateitem';
         }
         empty($extdeal) && $message($empty_item, axaction(1, M_REFERER));
         empty($selectid) && $message('select_extract', axaction(1, M_REFERER));
         $wheresql = $this->isadmin ? '' : " AND mid={$curuser->info['mid']}";
         $user = new cls_userinfo();
         foreach ($selectid as $eid) {
             if (!empty($extdeal['delete'])) {
                 if ($row = $db->fetch_one("SELECT mid,integral,checkdate FROM {$tblprefix}extracts WHERE eid='{$eid}'{$wheresql} LIMIT 0,1")) {
                     /*						if($this->isadmin){
                     							$sql = $row['delstate'] == 2 || !$row['checked'] ? "DELETE FROM {$tblprefix}extracts" :($row['delstate'] == 0 ? "UPDATE {$tblprefix}extracts SET delstate=1" : '');
                     						}else{
                     							$sql = $row['delstate'] == 1 || !$row['checked'] ? "DELETE FROM {$tblprefix}extracts" :($row['delstate'] == 0 ? "UPDATE {$tblprefix}extracts SET delstate=2" : '');
                     						}
                     						$sql && $db->query("$sql WHERE eid='$eid'");*/
                     if ($row['checkdate'] == 0) {
                         $user->activeuser($row['mid']);
                         $user->updatecrids(array('0' => $row['integral']), 1);
                     }
                     $db->query("DELETE FROM {$tblprefix}extracts WHERE eid='{$eid}'");
                 }
                 continue;
             }
             $this->isadmin && $db->query("UPDATE {$tblprefix}extracts SET checkdate={$timestamp} WHERE checkdate=0 AND eid='{$eid}'");
         }
         $this->isadmin && !empty($extdeal['delete']) && adminlog(lang('extract_admin'), lang('extract_operate'));
         $message('extract_operate_finish', M_REFERER);
     }
 }
예제 #9
0
         $itemnew['currency'] = max(0, intval($itemnew['currency']));
         if (min($itemnew['currency'], $sparenew) != $items[$cid]['currency']) {
             $sql_asw .= ($sql_asw ? ',' : '') . "currency=" . min($itemnew['currency'], $sparenew);
         }
         $sql_asw && $db->query("UPDATE {$tblprefix}answers SET {$sql_asw} WHERE aid={$aid} AND cid={$cid}");
         $sparenew = max(0, $sparenew - $itemnew['currency']);
     }
     $sql_arc .= ($sql_arc ? ',' : '') . "adopts={$adoptsnew}";
 }
 if (!empty($archivenew['notaclosed'])) {
     $auser = new cls_userinfo();
     $query = $db->query("SELECT * FROM {$tblprefix}answers WHERE aid={$aid}");
     while ($item = $db->fetch_array($query)) {
         if ($item['currency']) {
             $auser->activeuser($item['mid']);
             $auser->updatecrids(array($item['crid'] => $item['currency']), 1, lang('answer_reward'));
             $auser->init();
         }
     }
     $auser->activeuser($aedit->archive['mid']);
     $commu = read_cache('commu', $channels[$aedit->archive['chid']]['cuid']);
     if ($commu['setting']['credit']) {
         $auser->sub_data();
         $auser->updatefield('credits', $auser->info['credits'] + ($aedit->archive['currency'] - $sparenew) * $commu['setting']['credit'], 'sub');
     }
     $auser->updatecrids(array($aedit->archive['crid'] => $sparenew), 1, lang('answer_reward'));
     unset($auser);
     $sql_an .= ($sql_an ? ',' : '') . "end=1";
     $sql_arcs .= ($sql_arcs ? ',' : '') . "notaclosed=1";
     $sparenew = 0;
     $db->query("DELETE FROM {$tblprefix}notaanswer WHERE aid={$aid}");
예제 #10
0
 function setStatus($status, $remark = '')
 {
     global $db, $tblprefix, $timestamp, $onlineautosaving;
     switch ($this->status = $status) {
         case PAY_FINISHED:
             //交易完成
             $remark || ($remark = '交易完成');
             break;
         case PAY_FAIL:
             //交易失败
             $remark || ($remark = '交易失败');
             break;
         case PAY_WAIT_PAY:
             //等待付款
             $remark || ($remark = '等待付款');
             break;
         case PAY_WAIT_GOODS:
             //等待发货
             $remark || ($remark = '等待发货');
             break;
         case PAY_CONFIRM_GOODS:
             //等待买家确认收货
             $remark || ($remark = '等待买家确认收货');
             break;
         default:
             $this->message(array('title' => '调用错误', 'content' => "未定义的交易状态 “{$status”!}"));
     }
     switch ($this->by) {
         case 'orders':
             $upsql = ",remark='" . addslashes($remark) . "'";
             ($status == PAY_WAIT_GOODS || $status == PAY_FINISHED && !$this->totalfee) && ($upsql .= ",payed=totalfee");
             $db->query("UPDATE {$tblprefix}orders SET state={$status},updatedate={$timestamp}{$upsql} WHERE ({$status}<0 OR state<{$status}) AND oid='{$this->order_id}'");
             if ($ret = $db->affected_rows()) {
                 $query = $db->query("SELECT aid,tocid as cid,price,nums FROM {$tblprefix}purchases WHERE oid='{$this->order_id}'");
                 $nums = 0;
                 $aedit = new cls_arcedit();
                 while ($row = $db->fetch_array($query)) {
                     $nums += $row['nums'];
                     if ($row['cid']) {
                         //商家商品
                     } else {
                         //网站商品
                         $aedit->init();
                         $aedit->set_aid($row['aid']);
                         $aedit->arc_nums('orders', $row['nums']);
                         $aedit->arc_nums('ordersum', $row['price'] * $row['nums'], 1);
                     }
                 }
                 $user = new cls_userinfo();
                 $user->activeuser($this->mid, 1);
                 $user->basedeal('purchase', 1, $nums, 1);
             }
             break;
         case 'pays':
             $upsql = $onlineautosaving ? ",transdate={$timestamp}" : '';
             $db->query("UPDATE {$tblprefix}pays SET receivedate={$timestamp}{$upsql} WHERE receivedate=0 AND pid='{$this->order_id}'");
             $ret = $db->affected_rows();
             if ($ret && $upsql) {
                 $user = new cls_userinfo();
                 $user->activeuser($this->mid);
                 $user->updatecrids(array(0 => $this->totalfee), 1);
             }
             break;
         default:
             $this->message(array('title' => '调用错误', 'content' => "未定义的交易!"));
     }
     return $ret;
 }