lowerlimit($action, $uid, $coef, $fid); if($returnonly) return $limit; if($limit !== true) { $GLOBALS['id'] = $limit; $lowerlimit = is_array($action) && $action['extcredits'.$limit] ? abs($action['extcredits'.$limit]) + $_G['setting']['creditspolicy']['lowerlimit'][$limit] : $_G['setting']['creditspolicy']['lowerlimit'][$limit]; $rulecredit = array(); if(!is_array($action)) { $rule = $credit->getrule($action, $fid); foreach($_G['setting']['extcredits'] as $extcreditid => $extcredit) { if($rule['extcredits'.$extcreditid]) { $rulecredit[] = $extcredit['title'].($rule['extcredits'.$extcreditid] > 0 ? '+'.$rule['extcredits'.$extcreditid] : $rule['extcredits'.$extcreditid]); } } } else { $rule = array(); } $values = array( 'title' => $_G['setting']['extcredits'][$limit]['title'], 'lowerlimit' => $lowerlimit, 'unit' => $_G['setting']['extcredits'][$limit]['unit'], 'ruletext' => $rule['rulename'], 'rulecredit' => implode(', ', $rulecredit) ); if(!is_array($action)) { if(!$fid) { showmessage('credits_policy_lowerlimit', '', $values); } else { showmessage('credits_policy_lowerlimit_fid', '', $values); } } else { showmessage('credits_policy_lowerlimit_norule', '', $values); } } } function _updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = '', $relatedid = 0, $ruletxt = '', $customtitle = '', $custommemo = '') { if(empty($uids)) return; if(!is_array($dataarr) || empty($dataarr)) return; if($operation && $relatedid || $customtitle) { $writelog = true; } else { $writelog = false; } $data = $log = array(); foreach($dataarr as $key => $val) { if(empty($val)) continue; $val = intval($val); $id = intval($key); $id = !$id && substr($key, 0, -1) == 'extcredits' ? intval(substr($key, -1, 1)) : $id; if(0 < $id && $id < 9) { $data['extcredits'.$id] = $val; if($writelog) { $log['extcredits'.$id] = $val; } } else { $data[$key] = $val; } } if($writelog) { credit_log($uids, $operation, $relatedid, $log, $customtitle, $custommemo); } if($data) { include_once libfile('class/credit'); $credit = & credit::instance(); $credit->updatemembercount($data, $uids, $checkgroup, $ruletxt); } } function credit_log($uids, $operation, $relatedid, $data, $customtitle = '', $custommemo = '') { if((!$operation || empty($relatedid)) && !strlen($customtitle) || empty($uids) || empty($data)) { return; } $log = array( 'uid' => $uids, 'operation' => $operation, 'relatedid' => $relatedid, 'dateline' => TIMESTAMP, ); foreach($data as $k => $v) { $log[$k] = $v; } if(is_array($uids)) { foreach($uids as $k => $uid) { $log['uid'] = $uid; $log['relatedid'] = is_array($relatedid) ? $relatedid[$k] : $relatedid; $insertid = C::t('common_credit_log')->insert($log, true); C::t('common_credit_log_field')->insert(array('logid' => $insertid, 'title' => $customtitle, 'text' => $custommemo)); } } else { $insertid = C::t('common_credit_log')->insert($log, true); C::t('common_credit_log_field')->insert(array('logid' => $insertid, 'title' => $customtitle, 'text' => $custommemo)); } } function makecreditlog($log, $otherinfo=array()) { global $_G; $log['dateline'] = dgmdate($log['dateline'], 'Y-m-d H:i'); $log['optype'] = lang('spacecp', 'logs_credit_update_'.$log['operation']); $log['opinfo'] = ''; $info = $url = ''; switch($log['operation']) { case 'TRC': $log['opinfo'] = ''.lang('home/template', 'done').(!empty($otherinfo['tasks'][$log['relatedid']]) ? ' '.$otherinfo['tasks'][$log['relatedid']].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'task_credit').''; break; case 'RTC': $log['opinfo'] = ''.lang('forum/template', 'published').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'special_3_credit').''; break; case 'RAC': $log['opinfo'] = ''.lang('home/template', 'security_answer').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'special_3_best_answer').''; break; case 'MRC': $log['opinfo'] = lang('spacecp', 'magic_credit'); break; case 'BMC': $log['opinfo'] = ''.lang('home/template', 'magics_operation_buy').' '.(!empty($_G['cache']['magics'][$log['relatedid']]['name']) ? $_G['cache']['magics'][$log['relatedid']]['name'] : '').' '.lang('home/template', 'magic').''; break; case 'BME': $log['opinfo'] = ''.lang('spacecp', 'buy_medal').''; break; case 'BGC': $log['opinfo'] = lang('spacecp','magic_space_gift'); break; case 'RGC': $log['opinfo'] = lang('spacecp','magic_space_re_gift'); break; case 'AGC': $log['opinfo'] = lang('spacecp', 'magic_space_get_gift'); break; case 'TFR': $log['opinfo'] = ''.lang('home/template', 'to').' '.$otherinfo['users'][$log['relatedid']].' '.lang('spacecp', 'credit_transfer').''; break; case 'RCV': $log['opinfo'] = ''.lang('home/template', 'comefrom').' '.$otherinfo['users'][$log['relatedid']].' '.lang('spacecp', 'credit_transfer_tips').''; break; case 'CEC': $log['opinfo'] = lang('spacecp', 'credit_exchange_tips_1').''.$_G['setting']['extcredits'][$log['minid']]['title'].' '.lang('spacecp', 'credit_exchange_to').' '.$_G['setting']['extcredits'][$log['maxid']]['title'].''; break; case 'ECU': $log['opinfo'] = lang('spacecp', 'credit_exchange_center'); break; case 'SAC': $log['opinfo'] = ''.lang('spacecp', 'attach_sell').' '.$otherinfo['attachs'][$log['relatedid']]['filename'].' '.lang('spacecp', 'attach_sell_tips').''; break; case 'BAC': $log['opinfo'] = ''.lang('spacecp', 'attach_buy').' '.$otherinfo['attachs'][$log['relatedid']]['filename'].' '.lang('spacecp', 'attach_buy_tips').''; break; case 'PRC': $tid = $otherinfo['post'][$log['relatedid']]; $log['opinfo'] = ''.(!empty($otherinfo['threads'][$tid]['subject']) ? ' '.$otherinfo['threads'][$tid]['subject'].' ' : lang('home/template', 'post')).lang('spacecp', 'grade_credit').''; break; case 'RSC': $tid = $otherinfo['post'][$log['relatedid']]; $log['opinfo'] = ''.lang('home/template', 'credits_give').(!empty($otherinfo['threads'][$tid]['subject']) ? ' '.$otherinfo['threads'][$tid]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'grade_credit2').''; break; case 'STC': $log['opinfo'] = ''.lang('spacecp', 'attach_sell').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'thread_credit').''; break; case 'BTC': $log['opinfo'] = ''.lang('spacecp', 'attach_buy').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'thread_credit2').''; break; case 'AFD': $log['opinfo'] = lang('spacecp', 'buy_credit'); break; case 'UGP': $log['opinfo'] = lang('spacecp', 'buy_usergroup'); break; case 'RPC': $log['opinfo'] = lang('spacecp', 'report_credit'); break; case 'ACC': $log['opinfo'] = ''.lang('spacecp', 'join').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'activity_credit').''; break; case 'RCT': $log['opinfo'] = ''.lang('spacecp', 'thread_send').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' ' : '').lang('spacecp', 'replycredit').''; break; case 'RCA': $log['opinfo'] = ''.lang('home/template', 'reply').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' '.lang('home/template', 'eccredit_s') : '').lang('spacecp', 'add_credit').''; break; case 'RCB': $log['opinfo'] = ''.lang('spacecp', 'recovery').(!empty($otherinfo['threads'][$log['relatedid']]['subject']) ? ' '.$otherinfo['threads'][$log['relatedid']]['subject'].' ' : lang('spacecp', 'replycredit_post')).lang('spacecp', 'replycredit_thread').''; break; case 'CDC': $log['opinfo'] = lang('spacecp', 'card_credit'); break; case 'RKC': $log['opinfo'] = lang('spacecp', 'ranklist_top'); break; case 'RPR': $log['opinfo'] = lang('spacecp', 'admincp_op_credit'); break; case 'RPZ': $log['opinfo'] = lang('spacecp', 'admincp_op_credit'); break; case 'FCP': $log['opinfo'] = ''.lang('spacecp', 'buy_forum').''; break; case 'BGR': $log['opinfo'] = ''.lang('spacecp', 'buildgroup').''; break; default: $log['opinfo'] = !empty($log['title']) ? $log['title'] : ''; } return $log; } function getotherinfo($aids, $pids, $tids, $taskids, $uids) { global $_G; $otherinfo = array('attachs' => array(), 'threads' => array(), 'tasks' => array(), 'users' => array()); if(!empty($aids)) { $attachs = C::t('forum_attachment')->fetch_all($aids); foreach($attachs as $value) { $value['tableid'] = intval($value['tableid']); $attachtable[$value['tableid']][] = $value['aid']; $tids[$value['tid']] = $value['tid']; } foreach($attachtable as $id => $value) { $attachs = C::t('forum_attachment_n')->fetch_all($id, $value); foreach($attachs as $value) { $otherinfo['attachs'][$value['aid']] = $value; } } } if(!empty($pids)) { foreach(C::t('forum_post')->fetch_all(0, $pids) as $value) { $tids[$value['tid']] = $value['tid']; $otherinfo['post'][$value['pid']] = $value['tid']; } } if(!empty($tids)) { foreach(C::t('forum_thread')->fetch_all_by_tid($tids) as $value) { $otherinfo['threads'][$value['tid']] = $value; } } if(!empty($taskids)) { foreach(C::t('common_task')->fetch_all($taskids) as $value) { $otherinfo['tasks'][$value['taskid']] = $value['name']; } } if(!empty($uids)) { foreach(C::t('common_member')->fetch_all($uids) as $uid => $value) { $otherinfo['users'][$uid] = $value['username']; } } return $otherinfo; } ?>