·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

附件下载记录,有些用户组下载附件不扣积分,但是下载.....

240 2
发表于 2022-6-9 17:37:20 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
附件下载记录,有些用户组下载附件不扣积分,但是下载怎么也把记录到里面。
类型图中框架的

附件下载记录,有些用户组下载附件不扣积分,但是下载..... 附件,下载,记录,用户,用户组

怎么修改
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-17 12:30:16 | 查看全部
在Discuz!中,附件下载记录的功能通常是通过插件或自定义代码实现的。如果你希望某些用户组在下载附件时不扣积分,但仍然记录下载行为,可以通过以下步骤进行修改:

### 1. 修改下载逻辑
首先,你需要找到处理附件下载的代码部分。通常,这部分代码位于 `source/module/forum/forum_attachment.php` 文件中。

#### 1.1 找到下载扣积分的逻辑
在 `forum_attachment.php` 文件中,找到处理附件下载扣积分的代码部分。通常,这部分代码会检查用户组权限,并根据用户组决定是否扣积分。

  1. if ($_G['group']['allowdownload'] && !$attach['isimage']) {
  2.     // 扣积分的逻辑
  3.     if (!in_array($_G['groupid'], array(1, 2, 3))) { // 假设1,2,3是不扣积分的用户组
  4.         // 扣积分操作
  5.         updatecreditbyaction('download', $_G['uid'], array(), $attach['aid']);
  6.     }
  7. }
复制代码


#### 1.2 修改代码
你可以修改上述代码,使得某些用户组在下载附件时不扣积分,但仍然记录下载行为。例如:

  1. if ($_G['group']['allowdownload'] && !$attach['isimage']) {
  2.     // 记录下载行为
  3.     C::t('forum_attachment_downloadlog')->insert(array(
  4.         'uid' => $_G['uid'],
  5.         'aid' => $attach['aid'],
  6.         'dateline' => TIMESTAMP,
  7.     ));

  8.     // 扣积分的逻辑
  9.     if (!in_array($_G['groupid'], array(1, 2, 3))) { // 假设1,2,3是不扣积分的用户组
  10.         // 扣积分操作
  11.         updatecreditbyaction('download', $_G['uid'], array(), $attach['aid']);
  12.     }
  13. }
复制代码


### 2. 修改下载记录逻辑
如果你希望某些用户组的下载行为不被记录,可以在记录下载行为的代码中添加条件判断。

  1. if ($_G['group']['allowdownload'] && !$attach['isimage']) {
  2.     // 记录下载行为
  3.     if (!in_array($_G['groupid'], array(4, 5, 6))) { // 假设4,5,6是不记录下载行为的用户组
  4.         C::t('forum_attachment_downloadlog')->insert(array(
  5.             'uid' => $_G['uid'],
  6.             'aid' => $attach['aid'],
  7.             'dateline' => TIMESTAMP,
  8.         ));
  9.     }

  10.     // 扣积分的逻辑
  11.     if (!in_array($_G['groupid'], array(1, 2, 3))) { // 假设1,2,3是不扣积分的用户组
  12.         // 扣积分操作
  13.         updatecreditbyaction('download', $_G['uid'], array(), $attach['aid']);
  14.     }
  15. }
复制代码


### 3. 测试修改
完成上述修改后,建议你在测试环境中进行测试,确保修改后的代码能够正常工作,并且不会影响其他功能。

### 4. 部署到生产环境
测试通过后,将修改后的代码部署到生产环境中。

### 5. 注意事项
- 在修改代码之前,建议备份相关文件,以防修改出错导致系统无法正常运行。
- 如果你对代码不熟悉,建议在开发环境中进行测试,或者寻求专业开发人员的帮助。

通过以上步骤,你可以实现某些用户组在下载附件时不扣积分,但仍然记录下载行为的功能。如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-20 21:39:02 | 查看全部
关于Discuz附件下载记录的修改方案,需要从用户组权限、积分逻辑及下载触发机制三个方面进行调整。以下是具体实现步骤:

1. 用户组权限二次校验
在`source/module/forum/forum_attachment.php`中找到扣积分逻辑区块(约第320行),增加组权限判断:

  1. // 原扣积分代码
  2. if($attach['price'] > 0 && !$ispaid) {
  3.     // 扣分逻辑
  4. }

  5. // 修改后增加:
  6. $groupid = $_G['groupid']; // 获取当前用户组
  7. $no_record_groups = array(4, 5); // 不记录的用户组ID数组

  8. if(!in_array($groupid, $no_record_groups)) {
  9.     // 记录下载日志
  10.     C::t('forum_attachmentlog')->insert(array(
  11.         'tid' => $attach['tid'],
  12.         'pid' => $attach['pid'],
  13.         'uid' => $_G['uid'],
  14.         'dateline' => TIMESTAMP
  15.     ));
  16. }
复制代码


2. 积分扣除与记录解耦处理
在`source/function/function_forum.php`中定位`updatecredits`函数,增加前置判断:

  1. function updatecredits($uid, $extcredits, $needcheck = true, $coef = 1, $update = true, $type='') {
  2.     global $_G;
  3.    
  4.     // 新增用户组判断
  5.     if(in_array($_G['groupid'], array(4,5)) && $type == 'attach') {
  6.         return false; // 特定用户组跳过积分操作
  7.     }
  8.    
  9.     // 原积分处理逻辑
  10. }
复制代码


3. 前端下载触发改造
在`template/default/forum/discuzcode.htm`模板中修改下载按钮事件:

  1. <!--{if $_G['group']['allowgetattach']}-->
  2.     <a href="forum.php?mod=attachment{$is_archive}&aid=$aidencode"
  3.        onclick="return handleDownload({$_G['groupid']}, this)">
  4.         下载附件
  5.     </a>
  6. <!--{/if}-->

  7. <script>
  8. function handleDownload(groupId, link) {
  9.     const noRecordGroups = [4,5];
  10.     const url = new URL(link.href);
  11.    
  12.     if(noRecordGroups.includes(groupId)) {
  13.         url.searchParams.append('nolog', 1);  // 添加禁止记录标记
  14.         link.href = url.toString();
  15.     }
  16.     return true;
  17. }
  18. </script>
复制代码


4. 后台管理增强(可选)
在`source/admincp/admincp_perm.php`中增加设置项:

  1. // 在用户组编辑页面增加新选项
  2. showsetting('不记录下载行为', 'newsetting[no_attachlog]', $group['no_attachlog'], 'radio');

  3. // 对应数据库需新增no_attachlog字段
复制代码


实现效果:
- 指定用户组下载时不会生成下载记录
- 前端请求自动携带禁用标记
- 积分系统与日志系统解耦处理
- 后台可配置化设置(需二次开发)

注意事项:
1. 修改前务必备份原始文件
2. 用户组ID需根据实际设置调整
3. 涉及数据库字段新增时需要执行ALTER语句
4. 缓存更新需在修改后清理data/cache目录

如果需要对日志表进行分区管理,建议在`source/class/table/forum_attachmentlog.php`中增加分区逻辑,可通过`$_G['groupid']`进行日志存储分区。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐

点我👉扫码添加站长微信,获取即时帮助!
点我👉扫码添加站长微信,获取即时帮助!
遇到问题别担心,添加站长微信,第一时间为您解决!专属客服在线等,享受一对一服务!

查看 »

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:18.222.140.52,GMT+8, 2025-4-7 10:13 , Processed in 0.488729 second(s), 84 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服
快速回复 返回顶部 返回列表