LifeType 中文開發論壇

支援 => 安裝與設定 => 主題作者是: Hans 於 九月 19, 2007, 11:17:57 下午



主題: LT與phpBB2整合
作者: Hans九月 19, 2007, 11:17:57 下午
phpBB
版本 2.0.22

LT
版本 1.2.4
在中文LT論壇上找到了
http://forum.lifetype.org.tw/index.php?topic=3779.0
http://forum.lifetype.org.tw/index.php?topic=3696.0
http://forum.lifetype.org.tw/index.php?topic=3518.0
並沒有詳細的說明,甚至還看到了些抱怨等問題,實在想說一句
都已經不用錢了,你還抱怨啥,不然花錢去買咩!!
給中文LT上的各位前輩們加油

在找不到資源的情況下,於是我只好硬著頭皮上英文官網的wiki上去找
嘿!!找到一些可以用的東西
http://wiki.lifetype.net/index.php/User_data_providers

我想我的英文造紙也沒強到那邊去,所以我就不班門弄斧的翻譯了
只記錄下我實做的過程及目前碰到尚未解決的問題
XD

open config/userdata.properties.php

find
#
# Default user data provider, LifeType's own one
#
$config = Array(
  "provider" => "LifeTypeUserDataProvider",
);

#
# PHPBB2 user data provider
#
/*$config = Array(
  "provider" => "PhpBB2UserDataProvider",
  "createBlogIfNotExisting" => true,
  "database" => "phpbb2",
  "user" => "root",
  "password" => "",
  "prefix" => "phpbb_"
);*/

replace with
#
# Default user data provider, LifeType's own one
#
/*$config = Array(
  "provider" => "LifeTypeUserDataProvider",
);*/

#
# PHPBB2 user data provider
#
  $config = Array(
  "provider" => "PhpBB2UserDataProvider",
  "createBlogIfNotExisting" => true,  <=這個設定是判斷要不要在建立帳號時也以使用者名稱自動產生一個部落格
  "database" => "資料庫名稱",
  "user" => "資料庫使用者名稱",
  "password" => "資料庫使用者密碼",
  "prefix" => "phpbb_" <=請依照你資料庫的設定修改之
);

然後再確認資料庫裡面有沒有 lt_phpbb2_users 這個欄位
如果沒有
可以在 http://wiki.lifetype.net/index.php/Phpbb2userdataprovider 找到
需要的東西
我順便把SQL碼也弄過來好了

程式碼:
CREATE TABLE lt_phpbb2_users (
 id int(10) unsigned NOT NULL auto_increment,
 phpbb_id int(10) unsigned NOT NULL default '0',
 full_name varchar(255) NOT NULL default ,
 about text,
 properties text NOT NULL,
 resource_picture_id int(10) NOT NULL default '0',
 status int(10) NOT NULL default '0',
 PRIMARY KEY  (id),
 UNIQUE KEY phpbb_id(phpbb_id)
) ENGINE=MyISAM

這個修改,應該是將LT本身的user資料欄位直接轉移至phpBB2上的user欄位
而產生出來的  lt_phpbb2_users 就是引用phpBB資料庫中的user欄的暫存區

基本上
我的整合算是完成,但是如果你的LT上已經有使用者,我就不建議這樣做
因為當使用者欄位轉移後,原來在 lt_users 裡的使用者就不能使用
關於這個問題,我並沒有在官網上找到解答,也請各位前輩如果知道該怎麼解決這個問題
就請po上來,我會再找時間把這份文件給整理一下

因為我是新建的LT站台,所以上述的問題對我來講不是問題
經過兩天多的實機測試下來,我發現將LT的使用者轉到phpBB上的好處
帳號可以使用中文,而且目前100多個帳號測試中並未發現問題
以上是我實做的部份,提供給大家參考
========================是的,我就是偉大的分隔線========================
接下來是我碰到的問題
在LT中文找不到相關的說明或文件,在英文官網討論區上找到5個類似的問題
基本上都與其他論壇或程式整合相關,但是也沒有解決的辦法
在這邊提出,希望請各位前輩解答,謝謝!!
問題如下圖

(http://pcdr.idv.tw/blog/summary.jpg)
在summary.php中出現了
Fatal error: Call to a member function FetchRow() on a non-object in www/blog/class/dao/userdata/baseuserdataprovider.class.php on line 109
只有彙整這一頁出問題,其他的功能也都正常,包含註冊也都可以正常的使用

我去打開 baseuserdataprovider.class.php
將 109上下的幾段貼上來
程式碼:
 // check if the user is the owner of any blog
            $prefix = $this->getPrefix();
            $owner = "SELECT * FROM {$prefix}blogs WHERE owner_id = ".$userid;
if( $status != BLOG_STATUS_ALL )
$owner .= " AND status = '".Db::qstr( $status )."'";
           
$result = $this->Execute( $owner );

            while( $row = $result->FetchRow($result)) {   <= Line 109
                $usersBlogs[] = $blogs->mapRow( $row );
                $ids[] = $row["id"];
            }
            $result->Close();
在英文官網上有看到類似的問題,我照著修改後出現了參數錯誤的訊息
所以英文官網上的說明應該也是錯的
感覺上好像是找不到 $result 這個值,這一段已經超出我的能力囉!!
麻煩各位前輩指導,謝謝!!
 :-D


主題: Re: LT與phpBB2整合
作者: Hans九月 20, 2007, 02:02:26 下午
XD
問題解決了
Summary.php 會去抓所有的 blogid
然而 當 user data Provider 由 LifeTypeUserDataProvider 轉移到 PhpBB2UserDataProvider 後
原先在LifeTypeUserDataProvider所建立的blogid 與userid 就會失效,當Summary.php去找所有的blogid 與userid 時
就會產生上一欄我所寫的問題
 :-D

解決的方法
直接在 phpMyAdmin 裡找到 lt_blogs欄,然後將LifeTypeUserDataProvider所建立的 blogid幹掉
就好囉!!

基本上已經整合成功
但是還有一個問題存在,就是由 PhpBB2UserDataProvider 所建立的使用者
並沒有站台管理權限,這個問題也解決了,不過咧!!
中秋假期在即,我準備出門去玩,目前橋不出時間來寫
過節後再來寫權限的處理方式
XD


主題: Re: LT與phpBB2整合
作者: frankmouse九月 26, 2007, 01:58:05 下午
我用這個方法try了ㄧ下
發覺用此方法可以讓phpbb2的使用者直接在lifetype上面建立自己的blog
但是.......發現幾個問題
1.最高管理者並沒有"全部站台管控"這個管理權限
2.lifetype的"lt_users"此table並沒有將phpbb_users複製過去

於是我的腦袋衍生出幾個問題
1.li_users此table如果沒有phpbb2的user資料,那麼寫lifetype的外掛程式時需要user資料,
就必須改從phpbb_users取資料,那麼,很多lifetype提供的class function是不是就無法使用,要自己改其他方法coding><
2.如果我是想讓使用者從lifetype註冊,然後自動在phpbb2建立此帳號,那又該如何做?(因為我是以lifetype為主,phpbb2為輔)
3.登入lifetype後,連結到phpbb2可否不用再輸入使用者帳號與密碼,就可以直接進去phpbb2?


主題: Re: LT與phpBB2整合
作者: Hans九月 27, 2007, 03:09:04 上午
我用這個方法try了ㄧ下
發覺用此方法可以讓phpbb2的使用者直接在lifetype上面建立自己的blog
但是.......發現幾個問題
1.最高管理者並沒有"全部站台管控"這個管理權限
2.lifetype的"lt_users"此table並沒有將phpbb_users複製過去

於是我的腦袋衍生出幾個問題
1.li_users此table如果沒有phpbb2的user資料,那麼寫lifetype的外掛程式時需要user資料,
就必須改從phpbb_users取資料,那麼,很多lifetype提供的class function是不是就無法使用,要自己改其他方法coding><
2.如果我是想讓使用者從lifetype註冊,然後自動在phpbb2建立此帳號,那又該如何做?(因為我是以lifetype為主,phpbb2為輔)
3.登入lifetype後,連結到phpbb2可否不用再輸入使用者帳號與密碼,就可以直接進去phpbb2?

1.這是我之後會po上來的東西,請等我一下嘿 :-D

2-1.當你選擇這種方法時,就得要有所取捨,畢竟phpBB已經是存在多年的老怪物了,
你有仔細看過 phpBB_user的欄位有多少個嗎? XD
在我實際的測試中class function似乎並沒有受到影響,當然啦!!
我一個人測試的部份一定不夠徹底,而且在LT這端,我也還是個新手,這方面可能得要請你多多指教。

2-2.在我的測試中,當你改成 PhpBB2UserDataProvider時兩端都可以註冊,
可是主要的資料只會儲存在phpBB_user中,在LT的phpbbuser裡面可以看得到userid 出現,並對應到phpBB_user的userid
如果這個帳號還未啟用,在兩邊都是不允許使用的,在任何一端啟動他,那兩邊就會同步啟動。
所以你的這個問題應該也可以解決,比較麻煩的是頭像的部份,兩邊的頭像大小可能要改成一樣的限制,
不然在顯示上會有點問題。
回頭看看你的文意,似乎你的LT已經開始在使用了對嗎?
如果是,那使用這個方法,你可能得先請你的user先把東西備走,你仔細回頭看看我寫的
當啟動PhpBB2UserDataProvider後,LT裡只要有扯到彙整功能的部份都會出問題,
然後,原來在LT裡的使用者也都會被忽略掉,也就是說,lt_user這個資料欄會被停用,
而相對於lt_user的 lt_blog也都會找不到,所以如果你要進行這種整合,建議你
備份,包括所有的自製模板都要備下來,不然一定會出事的  :-|

2-3.phpBB有提供自動登入吧!!第一次是一定要,之後就不會再問了
XD