您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
DISCUZ X3.0积分增减及记录使用方法实例
欧有皆2025-07-03Discuz教程已有人查阅
导读1、调用source/function/function_core.php 里面的 updatemembercount()方法,该方法只是一个简单的入口方法2、该方法中调用了source/function/function_credit.php 里面的_updatemembercount()方法
DISCUZ X3.0 积分增减以及记录
1、调用source/function/function_core.php 里面的 updatemembercount()方法,该方法只是一个简单的入口方法
1、调用source/function/function_core.php 里面的 updatemembercount()方法,该方法只是一个简单的入口方法
/*
* @$uids 用户
* @$dataarr 操作规则,如扣减第二个积分2分:array (‘extcredits2‘ => -2);
* @$checkgroup 是否检查用户组升级,通常未true
* @$operation 操作类型,默认空,如果需要增加记录,需要填充
* @$relatedid 关系ID,例如帖子ID
* @$ruletxt 积分规则文本(黄颜色框提示扣费的文字显示)
* @$customtitle 如果没有操作类型,则会默认显示这个为记录的title
* @$custommemo 这个是记录的详情
**/
function updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = ‘‘, $relatedid = 0, $ruletxt = ‘‘, $customtitle = ‘‘, $custommemo = ‘‘) {
if(!empty($uids) && (is_array($dataarr) && $dataarr)) {
require_once libfile(‘function/credit‘);
return _updatemembercount($uids, $dataarr, $checkgroup, $operation, $relatedid, $ruletxt, $customtitle, $custommemo);
}
return true;
}
2、该方法中调用了source/function/function_credit.php 里面的_updatemembercount()方法,函数原型如下:
/*
* @$uids 用户
* @$dataarr 操作规则,如扣减第二个积分2分:array (‘extcredits2‘ => -2);
* @$checkgroup 是否检查用户组升级,通常未true
* @$operation 操作类型,默认空,如果需要增加记录,需要填充
* @$relatedid 关系ID,例如帖子ID
* @$ruletxt 积分规则文本(黄颜色框提示扣费的文字显示)
* @$customtitle 如果没有操作类型,则会默认显示这个为记录的title
* @$custommemo 这个是记录的详情
* 以上传入参数基本由上一个入口方法updatemembercount()引入
**/
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;//必须要有操作类型以及关联ID或者有自定义的操作标题$customtitle才写入记录
} 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);
}
}
3、记录增加:引用了source/function/function_credit.php 里面的 credit_log() 方法,函数原型如下:
/*
* @$uids 用户
* @$operation 操作类型,默认空,如果需要增加记录,需要填充
* @$relatedid 关系ID,例如帖子ID
* @$data 积分增减记录数组
* @$customtitle 如果没有操作类型,则会默认显示这个为记录的title
* @$custommemo 这个是记录的详情
* 以上传入参数基本由入口方法updatemembercount()引入,至此积分操作记录增加完毕
**/
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));
}
}
4、积分变更操作:引用了:source/class/class_credit.php类文件中的 与入口方法同名的updatemembercount()方法执行之后的变更操作:
/*
* @$uids 用户
* @$creditarr 积分变更操作数组
* @$checkgroup 是否检查用户组升级,通常未true
* @$ruletxt 变更规则/提醒文本
* 以上传入参数基本由入口方法updatemembercount()引入,至此积分增减执行完毕
**/
function updatemembercount($creditarr, $uids = 0, $checkgroup = true, $ruletxt = ‘‘) {
global $_G;
if(!$uids) $uids = intval($_G[‘uid‘]);
$uids = is_array($uids) ? $uids : array($uids);
if($uids && ($creditarr || $this->extrasql)) {
if($this->extrasql) $creditarr = array_merge($creditarr, $this->extrasql);
$sql = array();
$allowkey = array(‘extcredits1‘, ‘extcredits2‘, ‘extcredits3‘, ‘extcredits4‘, ‘extcredits5‘, ‘extcredits6‘, ‘extcredits7‘, ‘extcredits8‘, ‘friends‘, ‘posts‘, ‘threads‘, ‘oltime‘, ‘digestposts‘, ‘doings‘, ‘blogs‘, ‘albums‘, ‘sharings‘, ‘attachsize‘, ‘views‘, ‘todayattachs‘, ‘todayattachsize‘);
$creditnotice = $_G[‘setting‘][‘creditnotice‘] && $_G[‘uid‘] && $uids == array($_G[‘uid‘]);
if($creditnotice) {
if(!isset($_G[‘cookiecredits‘])) {
$_G[‘cookiecredits‘] = !empty($_COOKIE[‘creditnotice‘]) ? explode(‘D‘, $_COOKIE[‘creditnotice‘]) : array_fill(0, 9, 0);
for($i = 1; $i <= 8; $i++) {
$_G[‘cookiecreditsbase‘][$i] = getuserprofile(‘extcredits‘.$i);
}
}
if($ruletxt) {
$_G[‘cookiecreditsrule‘][$ruletxt] = $ruletxt;
}
}
foreach($creditarr as $key => $value) {
if(!empty($key) && $value && in_array($key, $allowkey)) {
$sql[$key] = $value;
if($creditnotice && substr($key, 0, 10) == ‘extcredits‘) {
$i = substr($key, 10);
$_G[‘cookiecredits‘][$i] += $value;
}
}
}
if($creditnotice) {
dsetcookie(‘creditnotice‘, implode(‘D‘, $_G[‘cookiecredits‘]).‘D‘.$_G[‘uid‘]);
dsetcookie(‘creditbase‘, ‘0D‘.implode(‘D‘, $_G[‘cookiecreditsbase‘]));
if(!empty($_G[‘cookiecreditsrule‘])) {
dsetcookie(‘creditrule‘, strip_tags(implode("\t", $_G[‘cookiecreditsrule‘])));
}
}
if($sql) {
C::t(‘common_member_count‘)->increase($uids, $sql);
}
if($checkgroup && count($uids) == 1) $this->checkusergroup($uids[0]);
$this->extrasql = array();
}
}
本文标签:
很赞哦! ()
相关教程
图文教程
Windows部署配置php+mysql搭建Discuz
Discuz! X 是一款以 PHP 为编程语言,以 MySQL 为数据库,并使用 Apache/IIS/Nginx(任意一种即可) 提供 web 服务的产品。要搭建 Discuz! X 站点,服务器必须安装由 PHP、MySQL、Apa
discuz数据库表说明
pre_common_addon 插件扩展中心服务商表pre_common_admincp_cmenu 后台管理面板,自定义常用菜单表pre_common_admincp_group 后台团队职务名称表
Discuz升级方法步骤教程
1.下载论坛程序文件2.备份数据库3.建立文件夹 old,旧程序除了 data , config, uc_client, uc_server 目录以外的程序移动进入 old目录中
Discuz自定义积分日志的方法
在有些项目中可能会遇到积分相关操作,同时需要将自己的积分操作加入积分日志,整理了一下。积分提现:积分变更的JS浮动提示信息中的文字;
相关源码
-
(pc+wap)pbootcms网站模板蓝色小程序网站开发公司基于PbootCMS内核开发的营销型门户模板,为小程序开发公司、电商软件企业打造。采用HTML5自适应架构,实现PC与手机端数据实时同步展示查看源码 -
(PC+WAP)pbootcms模板黑色门窗定制五金建材网站下载为门窗定制与五金建材企业设计的网站解决方案,采用PbootCMS开发,兼具专业展示与营销功能。黑色系设计突显工业质感,响应式布局确保在手机、平板等设备上的浏览体验。通过简单的内容替换,也可适用于建材贸易、家具定制等相关行业。查看源码 -
(自适应)工业机械制造设备网站pbootcms模板下载为机械制造、工业设备类企业设计,特别适合各类机械设备、生产线、工业自动化产品展示。采用响应式技术,确保在不同设备上都能清晰展示机械产品的技术参数和细节特点。查看源码 -
(自适应)摄像头安防电子设备pbootcms源码下载本模板基于PbootCMS系统开发,为安防电子设备企业设计,特别适合监控摄像头、安防系统等产品的展示。采用响应式技术,确保各类设备参数和功能在不同终端上都能清晰呈现。查看源码 -
(PC+WAP)化工材料企业环保能源绿色营销型pbootcms模板源码下载本模板为化工材料及环保能源企业设计,采用PbootCMS开发,可展示各类化工产品、环保技术及能源解决方案。查看源码 -
(自适应)蓝色沙盘复古建筑模型制作网站模板源码下载为建筑沙盘模型企业设计的响应式网站模板,通过三维空间展示技术结合产品参数可视化,有效提升模型作品的线上呈现效果与客户咨询转化率。查看源码
| 分享笔记 (共有 篇笔记) |
