首页 > 语言 > 关键词 > DISCUZ架构最新资讯 > 正文

DISCUZ架构:积分系统代码分析二

2008-10-30 09:26 · 稿源:php118.com

第二部分:include/newthread.inc.php

以下为引用的内容:
这个文件处理发新帖的特定请求。
if(isset($poll)) {
        $special = 1;
} elseif(isset($trade)) {
        $special = 2;
} elseif(isset($reward)) {
        $special = 3;
} elseif(isset($activity)) {
        $special = 4;
} else {
        $special = 0;
}
这一部分的代码是用来判断帖子的类型的,1为投票,2为交易帖,3为悬赏,4为活动,0为普通帖。
        $price = intval($price);
        $price = $maxprice && !$special ? ($price <= $maxprice ? $price : $maxprice) : 0;
这里是帖子价格的赋值,超过了最大的价格的处理,特殊帖子的价格处理。
} elseif($special == 3 && $allowpostreward) {
                $rewardprice = intval($rewardprice);
                if(!$rewardprice) {
                        showmessage('reward_credits_please');
                } elseif($rewardprice > 32767) {
                        showmessage('reward_credits_overflow');
                } elseif($rewardprice < $minrewardprice || ($maxrewardprice > 0 && $rewardprice > $maxrewardprice)) {
                        showmessage('reward_credits_between');
                } elseif(($realprice = $rewardprice + ceil($rewardprice * $creditstax)) > $_DSESSION["extcredits$creditstrans"]) {
                        showmessage('reward_credits_shortage');
                }

 

                $price = $rewardprice;

                $db->query("UPDATE {$tablepre}members SET extcredits$creditstrans=extcredits$creditstrans-$realprice WHERE uid='$discuz_uid'");
前面说过3表示悬赏帖子,那么当你发表成功了一个悬赏帖子后,就会相应在cdb_members表中减少相应的扩展积分,便是上面的代码的作用了。
elseif($special == 3 && $allowpostreward) {
                $db->query("INSERT INTO {$tablepre}rewardlog (tid, authorid, netamount, dateline) VALUES ('$tid', '$discuz_uid', $realprice, '$timestamp')");
        }
后续判断如果为悬赏帖子的话就往cdb_rewardlog(悬赏记录表)里写入一条记录。
        if($attachment) {
                $searcharray = $pregarray = $replacearray = array();
                foreach($attachments as $key => $attach) {
                        $db->query("INSERT INTO {$tablepre}attachments (tid, pid, dateline, readperm, price, filename, description, filetype, filesize, attachment, downloads, isimage, uid, thumb, remote)
                                VALUES ('$tid', '$pid', '$timestamp', '$attach[perm]', '$attach[price]', '$attach[name]', '$attach[description]', '$attach[type]', '$attach[size]', '$attach[attachment]', '0', '$attach[isimage]', '$attach[uid]', '$attach[thumb]', '$attach[remote]')");
                        $searcharray[] = '[local]'.$localid[$key].'[/local]';
                        $pregarray[] = '/\[localimg=(\d{1,3}),(\d{1,3})\]'.$localid[$key].'\[\/localimg\]/is';
                        $replacearray[] = '[attach]'.$db->insert_id().'[/attach]';
                }
                $message = str_replace($searcharray, $replacearray, preg_replace($pregarray, $replacearray, $message));
                $db->query("UPDATE {$tablepre}posts SET message='$message' WHERE pid='$pid'");
                updatecredits($discuz_uid, $postattachcredits, count($attachments));
        }
如果帖子中带有附件的话,就把附件插入cdb_attachments表,然后注意到$message这一个变量在这里用到了替换,这里的作用是图文混排。接下来往cdb_posts写一条记录,再用include/global.func.php定义到一个函数updatecredits来更新积分。
给Discuz的一个小建议:可以判断是不是postattachcredits为0,为0就可以不执行updatecredits这个函数,虽然在函数定义的时候也有判断,不过在这里判断似乎更好。
if($modnewthreads) {

                $db->query("UPDATE {$tablepre}forums SET todayposts=todayposts+1 WHERE fid='$fid'", 'UNBUFFERED');
                $allowuseblog && $isblog && $blog ? showmessage('post_newthread_mod_blog_succeed', "blog.php?uid=$discuz_uid") :
                        showmessage('post_newthread_mod_succeed', "forumdisplay.php?fid=$fid");

        } else {

                if($digest) {
                        foreach($digestcredits as $id => $addcredits) {
                                $postcredits[$id] = (isset($postcredits[$id]) ? $postcredits[$id] : 0) + $addcredits;
                        }
                }
                updatepostcredits('+', $discuz_uid, $postcredits);

                $lastpost = "$tid\t$subject\t$timestamp\t$author";
                $db->query("UPDATE {$tablepre}forums SET lastpost='$lastpost', threads=threads+1, posts=posts+1, todayposts=todayposts+1 WHERE fid='$fid'", 'UNBUFFERED');
                if($forum['type'] == 'sub') {
                        $db->query("UPDATE {$tablepre}forums SET lastpost='$lastpost' WHERE fid='$forum[fup]'", 'UNBUFFERED');
                }

                if($allowuseblog && $isblog && $blog) {
                        showmessage('post_newthread_blog_succeed', "blog.php?tid=$tid");
                } else {
                        showmessage('post_newthread_succeed', "viewthread.php?tid=$tid&extra=$extra");
                }

        }
这里是最后一段代码,作用是这样的:
首先看看是不是在发新帖的时候就被加为文集

  • 相关推荐
  • 大家在看
  • 钟表制造商Swatch:上周末IT系统遭遇网络攻击,已关闭部分系统

    ​路透社于9月29日周二报道称,全球最大钟表制造商Swatch集团今天表示,在周末发现IT系统遭遇网络攻击后,该公司关闭了部分技术系统。部分系统的关闭影响了其部分业务,但Swatch没有具体说明哪些业务受到影响。

  • NVIDIA安培架构Quadro专业卡谍照曝光:12Pin供电、48GB显存

    有消息称,黄仁勋希望在今年内完成GeForce安培显卡全系的布局,而随着10月5日GTC大会的临近,新的Quadro专业显卡、TITAN核弹以及更多加速产品,同样有望借机登场。日前,老外曝光了据称是Quad

  • 积分营销玩法,你都会了吗?

    关于积分,许多做运营的同学一点都不陌生。无论是线上商城,还是线下实体店,都有用积分来做一些促活留存的事情。

  • 系统分析我乐橱柜怎么样,助你了解我乐橱柜和索菲亚哪个好?

    我乐家居和索菲亚在定制橱柜行业中有口皆碑,不久前两者更是皆在第四届中国家居品牌大会中斩获“2019-2020十大定制家居领袖品牌”荣誉,再一次证明了自身实力。因此,很多人会把我乐家居的橱柜和索菲亚的橱柜放在一起比较,想明确知道我乐橱柜和索菲亚哪个好?今天本文就先系统地分析下我乐家居,给在我乐和索菲亚之间犹豫的小伙伴,提供一些参考。图:我乐家居品牌形象代言人高圆圆我乐家居(股票代码:603326)作为行业内相对年轻的本

  • 研究人员担心BleedingTooth蓝牙漏洞给Linux系统带来风险

    基于Linux的操作系统通常被认为比Windows等系统更安全,但这并不意味着它们完全没有安全问题。谷歌安全研究人员已经对Linux蓝牙堆栈中的一系列"零点击"漏洞发出警告。该漏洞被称为BleedingTooth,最坏的后果是带来远程代码执行攻击。

  • Michael Burry看空特斯拉 认为其监管积分收入是“正在融化的冰块”

    近日, Michael Burry(迈克尔·伯里)在社交账号中发布“看空”特斯拉的言论。他认为,特斯拉的估值与行业内其他公司相比过于荒唐。在他的发布一张截图显示,显示了特斯拉与其竞争对手的估值。他指出,特斯拉的市销率达到18,而行业平均为0.35。他在推特中写道:“全球汽车(不包括特斯拉)销量2.3万亿美元,1000亿美元EBIT(息税前利润),8070亿美元市值。特斯拉250亿美元销量(没有EBIT),4380亿美元市值。特斯拉

  • 知名程序员分析微软 Windows 未来或成 Linux 子系统

    微软的 Windows 10 已经发布两版 Windows subsystem For Linux,实现 Linux 二进制代码在 Windows 环境中运行。微软一直都在向开源社区示好,当然也包括 Linux,微软还将推出 Linux 版的 Edge 浏览器。知名程序员 Eric S Raymond 分析称,由于个人电脑市场业务正在下滑,对微软来说,有利可图的业务是 Azure,而且 Azure 运行在 Linux 上的机器要多与 Windows。Raymond 表示,微软以后可能会放弃

  • 云安全日报200925:思科互联网操作系统发现执行任意代码高危漏洞,需要尽快升级

    Cisco IOS和Cisco IOS XE是思科(Cisco)公司旗下路由器和交换机等网络设备广泛采用的互联网操作系统。9月24日,思科公司发布了一系列补丁程序,目的是修复网络巨头无处不在的互联网操作系统(IOS)中的漏洞。这些补丁修复了各种产品的漏洞,解决了拒绝服务、文件覆盖和输入验证攻击,特权升级,执行任意代码等问题。以下是漏洞详情:漏洞详情据思科安全公告显示,所通报的这些漏洞中严重性等级为高的有29个,严重等级为中等的有13?

  • Zen架构迄今最重大更新:AMD官方解密Zen3

    上周,AMD发布Zen3架构及首批四款锐龙5000桌面处理器产品。今天下午(10月12日),AMD中国官微编译了会上首席技术官兼执行副总裁Mark Papermaster的发言,他简明扼要地揭晓了Zen3架构的奥秘。

    AMD
  • 深入解析Lua脚本加密技术,给游戏代码加上“紧箍咒”

    不少安全专家表示,在互联网上失去对代码的控制,就像把银行的设计图交给抢劫犯一样。Lua是一种被广泛用于游戏开发中的计算机语言,方便开发者定制自己所需的功能。其中,红遍全球的《愤怒的小鸟》就是由Lua语言用Wax开发的。此外,梦幻西游、奇迹暖暖、开心消消乐、放置奇兵、最强蜗牛等手游也采用了Lua语言进行编写。近年来,Lua脚本在游戏行业长期流行,但Lua脚本泄露事件屡见不鲜,其安全性也引起关注。不法分子通过开私服、开

  • 美团优选架构人事大调整,社区团购升为一级战略

    美团内部已将“社区团购”业务定为一级战略项目。这是继餐饮外卖、到店及酒旅两大主体业务之后,美团内部新规划的增长曲线,承担美团下一个营收增长点。

  • 微软撰文详细介绍新版Edge如何通过多进程架构变得更加高效

    微软昨天表示,微软新推出的基于Chromium的Edge浏览器通过使用多进程架构提高了浏览器的安全性和可靠性。微软声称,这种架构大大降低了其浏览器所需的内存和CPU数量。一段时间以来,我们都知道谷歌浏览器被认为是最大的内存占用者之一,尤其是在Windows 10 PC上。由于新的微软Edge基于同样的Chromium引擎,该公司希望避免其浏览器走向同样的方向。

  • 搜狗发布组件化代码解耦框架 极大降低组件化重构成本

    9 月 28 日,搜狗正式发布SogouModuleBus组件化解耦框架,为业界贡献新的组件化解决方案。同时,这款基于搜狗立体化架构思维诞生的组件化框架,将会进一步降低开发者的组件化重构成本。代码耦合,是指软件工程中不同模块和类之间的依赖关系。耦合度高,则代码之间的依赖度高,往往容易出现牵一发而动全身的被动局面。因此开发者们需要对高耦合度代码进行解耦,让业务模块之间的关联依赖降到最低。此次搜狗SogouModuleBus组件化框架

  • 微软已移除Windows 10中用于通话的相关代码:全面转战安卓

    对于微软来说,他们已经彻底放弃Windows Phone了。根据一些网友发现的情况看,通话相关的GUID随着2020年3月发布的预览版就已经删除了。对于那些不熟悉的人来说,全球唯一标识符(GUID)通常被

  • NVIDIA宣布NVIDIA DGX SuperPOD已就绪,可从全球认证合作伙伴处获取

    全球最先进的AI系统现可按照每20个节点为一个增量单元搭建;首批产品将在年底前安装到韩国、英国、瑞典和印度。加利福尼亚州圣克拉拉市 – GTC 2020秋季站 - 2020年10月5日 – NVIDIA今日发布企业版NVIDIA DGX SuperPODTM解决方案,这是全球首个一站式AI基础设施,能够让企业以惊人的速度安装功能强大的AI超级计算机——通常只需短短几周时间。已上市的DGX SuperPOD是由包含20个到140个独立的NVIDIA DGX A100TM系统构建的集群,现?

  • 黑客声称获取育碧尚未发布游戏《看门狗:军团》源代码

    育碧和Crytek(欧洲的电子游戏开发商)这两家当今最大的游戏公司数据遭泄露,原因是一个名为Egregor的勒索软件团伙在窃取了这家两家公司内部网络窃取的数据,并在暗网上公布。

  • 微软已移除Windows10中用于通话的相关代码,全面转战安卓

    对于微软来说,他们已经彻底放弃Windows Phone了。根据一些网友发现的情况看,通话相关的GUID随着 2020 年 3 月发布的预览版就已经删除了。对于那些不熟悉的人来说,全球唯一标识符(GUID)通常被开发人员和微软用于运行脚本或进程。

  • 抖音竞品分析方法步骤 抖音竞品分析怎么做

    抖音短视频平台如今越来越多的人进入,并且同类型风格的竞争性也变得更加明显,对于新手来说,如何在进入抖音的时候,做好竞品的分析报告,让自己的定位更加清晰、更容易获得用户认可呢,这里我们来看下抖音竞品的分析步骤流程。

  • 英国打造新一代雷达系统雷达系统:号称全球最先进

    据外媒最新报道称,英国正在开发全新的雷达技术,而据说这会是全球最先进的雷达技术,其会被装备到新一代战斗机上。据悉,英国Leonardo公司正在开发的一种新型雷达系统。该系统被称为多功能射

  • [图]微软发布两个紧急安全更新:修复远程代码执行漏洞

    今天微软发布了两个不定期的例外(Out-of-Band)安全更新,重点修复了WindowsCodecs库和VisualStudioCode应用中的安全问题。这两个例外安全更新是本月补丁星期二活动日之后再发布的,主要修复了两款产品中的“远程代码执行”漏洞,能够让攻击者在受影响的设备上远程执行代码。

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议
  • 热门标签