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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

需求:

現有一個公司內部使用的辦公系統,需要將每天的活動信息匯總成報表數據自動發布到論壇的某個板塊中。之前做了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自定义接口开发——一键发帖,自动发帖,站外发帖(主题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。