日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 discuz自定义接口开发——一键发帖,自动发帖,站外发帖(主题) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需求:

現(xiàn)有一個(gè)公司內(nèi)部使用的辦公系統(tǒng),需要將每天的活動(dòng)信息匯總成報(bào)表數(shù)據(jù)自動(dòng)發(fā)布到論壇的某個(gè)板塊中。之前做了discuz論壇與辦公系統(tǒng)的同步登陸功能,使用的Ucenter。查看了相關(guān)的api接口,沒有找到一鍵發(fā)布論壇帖子的相關(guān)設(shè)置,所以網(wǎng)上找了相關(guān)的信息,自己動(dòng)手豐衣足食

論壇是discuz,另一個(gè)系統(tǒng)是用的Thinkphp32。接觸過這兩個(gè)系統(tǒng)并做過Ucenter同步登陸功能的朋友,應(yīng)該看著比較明白。

簡單了解discuz論壇數(shù)據(jù)庫表結(jié)構(gòu):

discuz發(fā)表主題(帖子)涉及到的幾個(gè)表:(這里列出了主要的幾個(gè)相關(guān)的表)?
? ? ? ? 1、主題表 pre_forum_thread:這個(gè)表一個(gè)主要數(shù)據(jù)就是 tid 主題ID
? ? ? ? 2、post 分表協(xié)調(diào)表 pre_forum_post_tableid:這里需要獲取一個(gè)自增的 pid
? ? ? ? 3、帖子表 pre_forum_post :記錄主題pid、fid、tid、title、content等主要信息
? ? ? ? 4、版塊表 pre_forum_forum:這里主要更新版塊的主題、帖子數(shù)量
? ? ? ? 5、帖子主題審核數(shù)據(jù)表 pre_forum_thread_moderate:這個(gè)可以根據(jù)自己狀況決定,并不是必須的
? ? ? ? 6、用戶統(tǒng)計(jì)表 pre_common_member_count:主要是更新用戶的主題數(shù)量
? ? ? ? 自己處理發(fā)帖主要涉及到了上面6個(gè)數(shù)據(jù)庫表,其中第5個(gè)不是必須的。

想了解discuz 數(shù)據(jù)庫相關(guān)信息可以查看:http://www.dz7.com.cn/library/database/

大致數(shù)據(jù)插入的流程:

? ? ? ? 第一步:向 主題表 pre_forum_thread 中插入版塊ID、用戶ID、用戶名、帖子標(biāo)題、發(fā)帖時(shí)間等信息。
? ? ? ? 第二步:獲取第一步插入表 pre_forum_thread 的數(shù)據(jù)ID,作為主題ID,即 tid?
? ? ? ? 第三步:向 post 分表協(xié)調(diào)表 pre_forum_post_tableid 插入一條數(shù)據(jù),這張表中只有一個(gè)自增字段 pid?
? ? ? ? 第四步:獲取 第三步 插入表 pre_forum_post_tableid 的數(shù)據(jù)ID,作為 pid?
? ? ? ? 第五部:向帖子表 pre_forum_post 中插入帖子相關(guān)信息,這里需要注意的是: pid為第四部的pid值,tid為第二步的tid值?
? ? ? ? 第六部:更新版塊 pre_forum_forum 相關(guān)主題、帖子數(shù)量信息?
? ? ? ? 第七步:更新用戶 pre_common_member_count 帖子數(shù)量信息?
? ? ?注:discuz發(fā)帖過程主要就是以上7個(gè)步驟,通過這幾個(gè)步驟就可以完成對實(shí)現(xiàn)discuz的發(fā)帖流程,其中設(shè)計(jì)到一些積分等其他信息的可以自己加上。 如果這里可以明白的話,下面的就不用看了,自己學(xué)著操作就好。

具體的操作:

1.修改擴(kuò)展文件? ? UcApi.class.php

這里的擴(kuò)展文件是Thinkphp未實(shí)現(xiàn)Ucenter同步登陸加載的擴(kuò)展文件

/*** [sendForumPost 一鍵自動(dòng)發(fā)布主題接口]* @param [type] $title [帖子標(biāo)題]* @param [type] $content [帖子內(nèi)容]* @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;}

由于固定發(fā)個(gè)帖子,所以我直接將主題板塊id和用戶名稱,用戶id,先寫成固定的,大家可以根據(jù)自己實(shí)際情況靈活設(shè)置。

在UcApi.class.php文件中,調(diào)用的方法多數(shù)是來源于uc_client引入的函數(shù)文件client.php

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

這里是模仿創(chuàng)建用戶接口流程。在UcApi.class.php文件中接口方法sendForumPost調(diào)用自定義內(nèi)置方法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是一個(gè)內(nèi)置函數(shù)。

參數(shù)一:數(shù)據(jù)操作方式。mysql代表直連數(shù)據(jù)庫,還包括其他兩種方式:uc_api_mysql 、uc_api_post。

參數(shù)二:需要調(diào)用的控制器名稱,這里調(diào)用的是user.php

參數(shù)三:調(diào)用指定控制器中的方法名稱。對應(yīng)的方法前面會(huì)拼接一個(gè)on

參數(shù)四:向方法中傳入的參數(shù)數(shù)據(jù),這是使用的必須是數(shù)組。

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、用戶名、帖子標(biāo)題、發(fā)帖時(shí)間等信息。$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 的數(shù)據(jù)ID,作為主題ID,即 tid?$tid = $this->db->insert_id();// ?第三步:向 post 分表協(xié)調(diào)表 pre_forum_post_tableid 插入一條數(shù)據(jù),這張表中只有一個(gè)自增字段 pid?$this->db->query("INSERT INTO `".UC_DBNAME."`.pre_forum_post_tableid SET pid=''");// ?第四步:獲取 第三步 插入表 pre_forum_post_tableid 的數(shù)據(jù)ID,作為 pid?$pid = $this->db->insert_id();// ?第五部:向帖子表 pre_forum_post 中插入帖子相關(guān)信息,這里需要注意的是: 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 相關(guān)主題、帖子數(shù)量信息?$this->db->query("UPDATE `".UC_DBNAME."`.pre_forum_forum SET posts=posts+1,threads=threads+1 WHERE fid='$forumId'");// ?第七步:更新用戶 pre_common_member_count 帖子數(shù)量信息?$this->db->query("UPDATE `".UC_DBNAME."`.pre_common_member_count SET posts=posts+1,threads=threads+1 WHERE uid='$uid'");return $tid;// --------------------- // 作者:區(qū)塊鏈攻城獅 // 來源:CSDN // 原文:https://blog.csdn.net/weixin_42799222/article/details/90899369 // 版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接! }

這里核心的操作數(shù)據(jù)庫的操作就是前面提到的七個(gè)步驟,如果不能直接用,可以參考借鑒。如有問題,或者哪里沒說明白,可以評論留言。

可有償提供支持:

discuz論壇服務(wù)器搭建

其他論壇內(nèi)容向discuz論壇做數(shù)據(jù)導(dǎo)入

discuz插件開發(fā)

或者其他技術(shù)支持

聯(lián)系QQ:951488865

總結(jié)

以上是生活随笔為你收集整理的discuz自定义接口开发——一键发帖,自动发帖,站外发帖(主题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。