需求:

现有一个公司内部使用的办公系统,需要将每天的活动信息汇总成报表数据自动发布到论坛的某个板块中。之前做了discuz论坛与办公系统的同步登陆功能,使用的Ucenter。查看了相关的api接口,没有找到一键发布论坛帖子的相关设置,所以网上找了相关的信息,自己动手丰衣足食。

论坛是discuz,另一个系统是用的Thinkphp32。接触过这两个系统并做过Ucenter同步登陆功能的朋友,应该看着比较明白。

简单了解discuz论坛数据库表结构:

discuz发表主题(帖子)涉及到的几个表:(这里列出了主要的几个相关的表) 
        1、主题表 pre_forum_thread:这个表一个主要数据就是 tid 主题ID
        2、post 分表协调表 pre_forum_post_tableid:这里需要获取一个自增的 pid
        3、帖子表 pre_forum_post :记录主题pid、fid、tid、title、content等主要信息
        4、版块表 pre_forum_forum:这里主要更新版块的主题、帖子数量
        5、帖子主题审核数据表 pre_forum_thread_moderate:这个可以根据自己状况决定,并不是必须的
        6、用户统计表 pre_common_member_count:主要是更新用户的主题数量
        自己处理发帖主要涉及到了上面6个数据库表,其中第5个不是必须的。

想了解discuz 数据库相关信息可以查看:http://www.dz7.com.cn/library/database/

大致数据插入的流程:

第一步:向 主题表 pre_forum_thread 中插入版块ID、用户ID、用户名、帖子标题、发帖时间等信息。
        第二步:获取第一步插入表 pre_forum_thread 的数据ID,作为主题ID,即 tid 
        第三步:向 post 分表协调表 pre_forum_post_tableid 插入一条数据,这张表中只有一个自增字段 pid 
        第四步:获取 第三步 插入表 pre_forum_post_tableid 的数据ID,作为 pid 
        第五部:向帖子表 pre_forum_post 中插入帖子相关信息,这里需要注意的是: pid为第四部的pid值,tid为第二步的tid值 
        第六部:更新版块 pre_forum_forum 相关主题、帖子数量信息 
        第七步:更新用户 pre_common_member_count 帖子数量信息 
     注:discuz发帖过程主要就是以上7个步骤,通过这几个步骤就可以完成对实现discuz的发帖流程,其中设计到一些积分等其他信息的可以自己加上。 如果这里可以明白的话,下面的就不用看了,自己学着操作就好。

具体的操作:

1.修改扩展文件    UcApi.class.php

这里的扩展文件是Thinkphp未实现Ucenter同步登陆加载的扩展文件

/*** [sendForumPost 一键自动发布主题接口]* @param  [type] $title   [帖子标题]* @param  [type] $content [帖子内容]* @return [type]       [description]*/public function sendForumPost($title,$content){$uid = 1;//公共信息,使用admin用户的id$forumId=112;//主题板块id|112=通知与公告$result = send_forum_post($uid,$title,$content,$forumId);return $result;}

由于固定发个帖子,所以我直接将主题板块id和用户名称,用户id,先写成固定的,大家可以根据自己实际情况灵活设置。

在UcApi.class.php文件中,调用的方法多数是来源于uc_client引入的函数文件client.php

2.修改Ucenter客户端uc_client文件 client.php

这里是模仿创建用户接口流程。在UcApi.class.php文件中接口方法sendForumPost调用自定义内置方法send_forum_post()。


function send_forum_post($uid,$title,$content,$forumId){$return = call_user_func(UC_API_FUNC, 'user', 'send_forum', array('title'=>$title,'content'=>$content,'forumId'=>$forumId, 'uid'=>$uid));return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
}

这里的call_user_func是一个内置函数。

参数一:数据操作方式。mysql代表直连数据库,还包括其他两种方式:uc_api_mysql 、uc_api_post。

参数二:需要调用的控制器名称,这里调用的是user.php

参数三:调用指定控制器中的方法名称。对应的方法前面会拼接一个on

参数四:向方法中传入的参数数据,这是使用的必须是数组。

3.修改Ucenter客户端uc_client控制器文件 user.php

function onsend_forum(){$this->init_input();$title = $this->input('title');$content = htmlspecialchars($this->input('content'));$forumId = $this->input('forumId');$uid = $this->input('uid');$time = time();// 开始入库操作//     第一步:向 主题表 pre_forum_thread 中插入版块ID、用户ID、用户名、帖子标题、发帖时间等信息。$this->db->query("INSERT INTO `".UC_DBNAME."`.pre_forum_thread SET fid='$forumId', authorid='$uid', author='admin', subject='$title', dateline='$time', lastpost='$time', lastposter='admin'");  //  第二步:获取第一步插入表 pre_forum_thread 的数据ID,作为主题ID,即 tid $tid = $this->db->insert_id();//  第三步:向 post 分表协调表 pre_forum_post_tableid 插入一条数据,这张表中只有一个自增字段 pid $this->db->query("INSERT INTO `".UC_DBNAME."`.pre_forum_post_tableid SET pid=''");//  第四步:获取 第三步 插入表 pre_forum_post_tableid 的数据ID,作为 pid $pid = $this->db->insert_id();//  第五部:向帖子表 pre_forum_post 中插入帖子相关信息,这里需要注意的是: pid为第四部的pid值,tid为第二步的tid值$this->db->query("INSERT INTO `".UC_DBNAME."`.pre_forum_post SET pid='$pid', fid='$forumId', tid='$tid', author='admin', authorid='$uid', subject='$title', dateline='$time', message='$content'");//  第六部:更新版块 pre_forum_forum 相关主题、帖子数量信息 $this->db->query("UPDATE `".UC_DBNAME."`.pre_forum_forum SET posts=posts+1,threads=threads+1 WHERE fid='$forumId'");//  第七步:更新用户 pre_common_member_count 帖子数量信息 $this->db->query("UPDATE `".UC_DBNAME."`.pre_common_member_count SET posts=posts+1,threads=threads+1 WHERE uid='$uid'");return $tid;// --------------------- // 作者:区块链攻城狮 // 来源:CSDN // 原文:https://blog.csdn.net/weixin_42799222/article/details/90899369 // 版权声明:本文为博主原创文章,转载请附上博文链接!
}

这里核心的操作数据库的操作就是前面提到的七个步骤,如果不能直接用,可以参考借鉴。如有问题,或者哪里没说明白,可以评论留言。

可有偿提供支持:

discuz论坛服务器搭建

其他论坛内容向discuz论坛做数据导入

discuz插件开发

或者其他技术支持

联系QQ:951488865

discuz自定义接口开发——一键发帖,自动发帖,站外发帖(主题)相关推荐

  1. Discuz! 移动端开发笔记-API篇(一)——获取主题列表中帖子的缩略信息

    一.背景 因为去年掌上论坛的app.小程序和API都开源了,解决了之前想开发移动端Dz应用而没有API的痛点.故最近打算抽空用uin-app做一下Dz的移动端开发. Discuz!掌上论坛APP 源码 ...

  2. 阿里云国际站服务器使用方法:云开发一键部署WordPress建站应用

    创建WordPress建站应用 1.登录云开发平台.打开网址阿里云-云开发平台,使用阿里云账号登录,按照提示创建团队,点击同意协议.没有阿里云账号的用户,在登录页面注册后进行登录即可.为了保证最好的使 ...

  3. 自动交易股票接口开发的关键是什么?

    小编认为自动交易股票接口软件的开发的关键是要知道券商的股票交易接口,但是出于安全的考虑,券商对外是不公开股票交易接口.但是我们自己是无法开发股票自动交易软件的开发.不过,现在很多券商都提供了证券独立委 ...

  4. dz发帖html模式,discuz二次开发调用编辑器发帖显示html何解?

    discuz的开发文档很少,在二次开发的时候用discuz的编辑器,显示的是html代码,查看源码和各种莫名其妙的问题着实令人摸不着头脑.而discuz帖子存储在数据库的却是自定义的bbcode而不是 ...

  5. 论坛自动发帖php源码,小蜜蜂论坛发帖机推出phpwind论坛发帖机

    小蜜蜂论坛发帖机推出phpwind论坛发帖机 小蜜蜂论坛发帖机,小蜜蜂论坛自动发帖机,phpwind论坛发帖机 小蜜蜂论坛发帖机,小蜜蜂论坛自动发帖机功能介绍 在论坛发帖上,如果能有一款软件能定时按您 ...

  6. 寻仙新马源码一键端_强大,腾讯开源前后端接口开发工具!

    APIJSON是啥? APIJSON是一种为API而生的JSON网络传输协议. 为 简单的增删改查.复杂的查询.简单的事务操作 提供了完全自动化的API. 能大幅降低开发和沟通成本,简化开发流程,缩短 ...

  7. discuz php接口文档,Discuz二次开发技术文档

    点评:Discuz二次开发基本知识总结,需要对discuz进行二次开发的朋友可以参考下. 一) Discuz!的文件系统目录 注:想搞DZ开发,就得弄懂DZ中每个文件的功能. a) Admin:后台管 ...

  8. 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传

    [vue开发问题-解决方法](九)使用element upload自定义接口上传文件,input多文件上传 参考文章: (1)[vue开发问题-解决方法](九)使用element upload自定义接 ...

  9. 通达信软件开发自定义接口的功能

    通达信软件开发自定义接口的功能,自定义数据是通达信提供给大家的可扩展数据接口. 这种数据类型带来了日期序列数据和字符串数据,极大地扩展了通达信本身的数据结构. 尤其是字符串功能,相当给力,可以在通达信 ...

  10. java 微信自定义菜单 java微信接口开发 公众平台 SSM

    1.   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限       角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.       按钮权限: 给角色分配按钮权 ...

最新文章

  1. 客快物流大数据项目(五十四):初始化Spark流式计算程序
  2. 交换机启用光口命令_如何在思科交换机上查询光模块状态?
  3. 深入Python(5):递归
  4. head first Design Pattern State
  5. 继承extends、super、this、方法重写overiding、final、代码块_DAY08
  6. 理解矩阵,矩阵背后的现实意义 [转]
  7. jQuery数据与Attr?
  8. Matlab计算器设计
  9. 废物利用--旧手机搭建linux服务器
  10. Echarts世界国家中英文对照
  11. iOS 通过商品短链接跳转京东商品详情页
  12. pc端video视频播放的注意点,video兼容ie播放
  13. 个税APP优化解决方案
  14. 计算机usb无法识别网络连接,usb无法识别是什么原因 usb无法识别解决方法【详解】...
  15. Android之ListView展示多类型的条目
  16. STM32F105RCT6使用CubeMX初始化工程——2:初始化CAN通信
  17. [python]百度AI接口实现人像抠图换背景色
  18. 【教程】【技术向】将博客批量导出为markdown或html格式
  19. Codevs 6个朋友
  20. python修改ppt的字体和颜色_python pptx教程:python 怎么设置ppt图表区的颜色以及给图表区加上边框...

热门文章

  1. error:control reaches end of non-void function [-Werror=return-type]
  2. 第十六届—振兴杯计算机网络管理员决赛“真题”
  3. 2017-9-13 NOIP模拟赛[xxy]
  4. [转载]使用 Apache Geronimo 和 POJO 构建 SOA 框架
  5. php7国内,介绍php7和php5对比
  6. SRT编码器之Rendezvous模式详解
  7. clone远程代码 在不同电脑上git_Git 同一电脑配置多个远程仓库
  8. Paypal 与Moneybookers
  9. Stata制作限制立方样条(RCS)(2)
  10. 计算机专业在经济社会的应用,计算机技术对社会发展的影响