Discuz!X 中积分操作函数以及自定义积分
<br />添加一条SQL,此 SQL 记录可以在您插件安装的时候内置在里面<br /><ol><li>INSERT INTO `pre_common_credit_rule` (`rulename`, `action`, `cycletype`, `cycletime`, `rewardnum`, `norepeat`, `extcredits1`, `extcredits2`, `extcredits3`, `extcredits4`, `extcredits5`, `extcredits6`, `extcredits7`, `extcredits8`, `fids`) VALUES<br /><li> (‘宠物购买’, ‘petbuy’, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ‘0′);</ol><br />添加后站长便可以在积分策略中看到这条记录<br />此时可让站长自行调整此策略<br />在代码中进行积分操作时,您只需在插件中添加以下代码,即可执行此积分策略<br /><ol><li> updatecreditbyaction(‘petbuy’, $_G['uid']);</ol><br />单独增减积分可用 updatemembercount() 函数<br /><ol><li>/**<br /><li> * 添加积分<br /><li> * @param Integer $uids: 用户uid或者uid数组<br /><li> * @param String $dataarr: member count相关操作数组,例: array(‘extcredits1′ => 1)<br /><li> * @param Boolean $checkgroup: 是否检查用户组 true or false<br /><li> * @param String $operation: 积分记录操作类型(不记录积分日志可忽略)<br /><li> * @param Integer $relatedid: 积分记录相关 ID(不记录积分日志可忽略)<br /><li> * @param String $ruletxt: 动画效果中的积分规则文本(UTF-8格式)<br /><li> */<br /><li> function updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = ”, $relatedid = 0, $ruletxt = ”)</ol><br />积分操作类型:<br /><table cellspacing="0" class="t_table" ><tr><td>操作名字</td><td>关联ID</td><td>说明</td></tr><tr><td>ACC</td><td>forum_activity.tid</td><td>参与活动扣除积分</td></tr><tr><td>AFD</td><td>common_member.uid</td><td>购买积分即积分充值</td></tr><tr><td>AGC</td><td>common_magic.mid</td><td>获得红包</td></tr><tr><td>BAC</td><td>forum_attachment.aid</td><td>购买附件支出积分</td></tr><tr><td>BGC</td><td>common_magic.mid</td><td>埋下红包</td></tr><tr><td>BMC</td><td>common_magic.mid</td><td>道具购买消耗积分</td></tr><tr><td>BTC</td><td>forum_thread.tid</td><td>购买主题支出积分</td></tr><tr><td>CDC</td><td>1</td><td>卡密充值</td></tr><tr><td>CEC</td><td>common_member.uid</td><td>积分兑换</td></tr><tr><td>ECU</td><td>common_member.uid</td><td>通过ucenter兑换积分</td></tr><tr><td>MRC</td><td>common_magic.mid</td><td>道具随机获取积分</td></tr><tr><td>PRC</td><td>forum_post.pid</td><td>帖子被评分所得积分</td></tr><tr><td>RAC</td><td>forum_thread.tid</td><td>最佳答案获取悬赏积分</td></tr><tr><td>RCA</td><td>forum_thread.tid</td><td>回帖中奖</td></tr><tr><td>RCB</td><td>forum_thread.tid</td><td>返还回帖奖励积分</td></tr><tr><td>RCT</td><td>forum_thread.tid</td><td>回帖奖励积分</td></tr><tr><td>RCV</td><td>common_member.uid</td><td>积分转账接收</td></tr><tr><td>RGC</td><td>common_magic.mid</td><td>回收红包</td></tr><tr><td>RKC</td><td>common_member.uid</td><td>竞价排名</td></tr><tr><td>RPC</td><td>common_report.id</td><td>举报功能中的奖惩</td></tr><tr><td>RSC</td><td>forum_thread.tid</td><td>评分帖子扣除自己的积分</td></tr><tr><td>RTC</td><td>forum_thread.tid</td><td>发表悬赏主题扣除积分</td></tr><tr><td>SAC</td><td>forum_attachment.aid</td><td>出售附件获得积分</td></tr><tr><td>STC</td><td>forum_thread.tid</td><td>出售主题获得积分</td></tr><tr><td>TFR</td><td>common_member.uid</td><td>积分转账转出</td></tr><tr><td>TRC</td><td>common_task.taskid</td><td>任务奖励积分</td></tr><tr><td>UGP</td><td>common_usergroup.groupid</td><td>购买扩展用户组支出积分<br /><br /><ol><li>function updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = '', $relatedid = 0, $ruletxt = '') {<br /><li> if(!empty($uids) && (is_array($dataarr) && $dataarr)) {<br /><li> require_once libfile('function/credit');<br /><li> return _updatemembercount($uids, $dataarr, $checkgroup, $operation, $relatedid, $ruletxt);<br /><li> }<br /><li> return true;<br /><li> }</ol><br />里面调用了另一个函数,原始的定义我也发过来吧:<br /><ol><li>function _updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = '', $relatedid = 0, $ruletxt = '') {<br /><li>if(empty($uids)) return;<br /><li>if(!is_array($dataarr) || empty($dataarr)) return;<br /><li>if($operation && $relatedid) {<br /><li>$writelog = true;<br /><li>$log = array(<br /><li>'uid' => $uids,<br /><li>'operation' => $operation,<br /><li>'relatedid' => $relatedid,<br /><li>'dateline' => time(),<br /><li>);<br /><li>} else {<br /><li>$writelog = false;<br /><li>}<br /><li>$data = array();<br /><li>foreach($dataarr as $key => $val) {<br /><li>if(empty($val)) continue;<br /><li>$val = intval($val);<br /><li>$id = intval($key);<br /><li>$id = !$id && substr($key, 0, -1) == 'extcredits' ? intval(substr($key, -1, 1)) : $id;<br /><li>if(0 < $id && $id < 9) { $data['extcredits'.$id] = $val; if($writelog) { $log['extcredits'.$id] = $val; } } else { $data[$key] = $val; } } if($writelog) { DB::insert('common_credit_log', $log); } if($data) { include_once libfile('class/credit'); $credit = & credit::instance(); $credit->updatemembercount($data, $uids, $checkgroup, $ruletxt);<br /><li>}<br /><li>}</ol><br />其中第四个参数和第五个参数在写积分记录的时候有用,如果两者皆不为空,则系统会在积分记录中记录。<br />第四个参数是记录相关操作的变量,第五个参数看名称应该是记录产生这个积分操作的相关的id值(例如像uid,fid,tid这类的),第六个参数用于当$data数组(即记录积分增减情况的数组)不为空时,重新调用函数并把值传递给第四个变量。<br /> <br />记录<em>, </em>积分<em>, </em>参数<em>, </em>四个<em>, </em>操作 收藏了
頁:
[1]