歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十二月 04, 2024, 01:29:32 上午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  開發  |  手冊文件  |  請問lifetype的發佈文章的sql query « 上篇主題 下篇主題 »
頁: [1]
作者 主題: 請問lifetype的發佈文章的sql query  (閱讀 25936 次)
kevinblue
新手見習
*
文章: 2


檢視個人資料
« 於: 二月 28, 2006, 12:46:31 下午 »

小弟是一個bbs的administrator
由於blog的風氣越來越盛,所以我們學校也決定要架blog
但是只有單純的blog似乎沒有什麼搞頭
所以我們就決定要把blog跟bbs的個人看板文章作整合(如果可以搭配上RSS就更好了)
使用者可以透過bbs client端發表blog文章,他也可以在bbs client設定這篇文章到底要不要發佈成blog

但是問題來了
bbsd是用c寫成的,而且我也不太會PHP(只有稍微看一下)

不過我有設計table和設計DB app的經驗
我的想法是lifetype是利用php寫的
那只要找出它insert文章的sql query這樣便可以輕易達到我所要的
可是我看了lifetype的source code很久還是沒找到相關的sql query
所以想請問一下lifetype新增一篇文章的流程是??
« 最後編輯時間: 二月 28, 2006, 01:08:10 下午 由 kevinblue » 已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #1 於: 二月 28, 2006, 01:27:55 下午 »

從 lifetype\class\action\admin\adminaddpostaction.class.php 這個程式開始吧。

跟文章的 sql 相關的在 lifetype\class\dao\articles.class.php

你也可以搜尋一下論壇,有人實作了透過 xmlrpc 管理功能。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #2 於: 二月 28, 2006, 10:48:05 下午 »

這是個很有意思的問題啊!

你必須先確認你的需求,是雙向( bbs <--> blog) 還是單向 (bbs --> Blog)。如果是單向,單純從 bbs 要發文到 blog,那只要透過 lifetype 的 xmlrpc.php 來做就可以了。

xmlrpc 目前支援 metaWeblog API 與 blogger API,你兩個都可以嘗試。

好,問題來了,在 C 底下要怎麼用 xmlrpc。(大部分的 bbs 應該都還是 C 寫的吧)

你可以到 http://www.xmlrpc.com/directory/1568/implementations 找到相關的 xmlrpc 的 實做來使用。你可以是是看這一個: http://xmlrpc-c.sourceforge.net/

你可以透過

metaWeblogAPI 中的 metaWeblog.newPost 或是 bloggapi 中的 blogger.newPost 來新增文章到blog 中。

=====

但是要能這麼做之前,你恐怕有一些事情要先做:

1. 整合 bbs 的註冊與 blog 註冊。比較簡單的方式是, disable lifetype 本身的註冊功能。透過 bbs 的一個選項,來決定要不要啟用 blog 帳號,這時候再來註冊。
2. 修改 bbs,在個人的註冊欄位上加上 blogid 或是 blogusername,在 lifetype 中是不准使用中文名稱來註冊的,所以我建議紀錄 blog id
3. 在 bbs 發表文章時,得要能選擇要不要發表到 blog,以及發表的 category。(這個可以透過 xmlrpc 來取得)
4. 才是把文章發表到 blog

======

如果是雙向,就更複雜『很多』。我不建議一開始就這麼做。

Mark
已記錄

markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #3 於: 二月 28, 2006, 10:51:40 下午 »

BTW,為什麼建議用 xmlrpc,因為這樣的implement 會讓這兩個系統能夠各自運作,卻又不會程式全部攪在一起。也不會因為 lifetype db schema change ,造成你的程式失效。

另外,因為兩個程式是不同的lanugage,用 web service 來結合也是比較建議的方式。

當然你也可以用 odbc 連結 mysql,直接把資料寫入。我個人不是很建議!

Mark
已記錄

kevinblue
新手見習
*
文章: 2


檢視個人資料
« 回覆文章 #4 於: 二月 28, 2006, 11:15:28 下午 »

首先感謝markwu大跟lss大

1. 整合 bbs 的註冊與 blog 註冊。比較簡單的方式是, disable lifetype 本身的註冊功能。透過 bbs 的一個選項,來決定要不要啟用 blog 帳號,這時候再來註冊。
bbs有bbsid
我想這個利用mysql c api寫一個程式去讀.acct檔把他轉成blog id便可 微笑

2. 修改 bbs,在個人的註冊欄位上加上 blogid 或是 blogusername,在 lifetype 中是不准使用中文名稱來註冊的,所以我建議紀錄 blog id
我想blog跟bbs的id同步會比較好,而且現在99.99%的bbs id都是英文 囧

3. 在 bbs 發表文章時,得要能選擇要不要發表到 blog,以及發表的 category。(這個可以透過 xmlrpc 來取得)
4. 才是把文章發表到 blog
我想目前只會先作bbs ---> blog的功能
blog --> bbs等第一個功能做出來再說 Orz

另外lss大的提醒我找到好像是LF insert article的sql query了不知道是不是 @_@
引用自: kevinblue
/**
   * Adds a new article to the database
   *
   * @param newArticle An Article object with all the necessary information.
   * @return Returns true if article was added successfully or false otherwise.
      If successful, it will modify the parmeter
   * passed by reference and set its database id.
   */
function addArticle( &$newArticle )
{
 // first, we build up the query
 $query = "INSERT INTO ".$this->getPrefix()."articles(
                      user_id,blog_id,status,date,properties, slug )
                      VALUES ( ".$newArticle->getUser().",".
                      $newArticle->getBlog().",'".
                      $newArticle->getStatus()."','".
                      $newArticle->getDate()."','".
                      serialize($newArticle->getProperties())."','".
                      $newArticle->getPostSlug()."');";

            // and then we send it to the db
            //$this->_db->debug=true;
            $result = $this->Execute( $query );

            if( !$result ){
                return false;
            }
已記錄
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #5 於: 二月 28, 2006, 11:54:57 下午 »

如果你真的還是要用 db 直接寫入,哪恐怕不是指有那一個。

lifetyp 的 article 是 de-normalize 過的,所以分成好幾個 table ...

你必須要看:
addArticle(); -> lt_articles
addArticleText(); -> lt_articles_text
addPostCategoriesLink(); ->lt_articles_categories_link

這三個!

所以我才不建議直接做 DB insert。

Mark
« 最後編輯時間: 三月 01, 2006, 12:05:38 上午 由 markwu » 已記錄

頁: [1]
LifeType 中文開發論壇  |  開發  |  手冊文件  |  請問lifetype的發佈文章的sql query « 上篇主題 下篇主題 »
    前往: