下載
軟體開發
帳戶
下載
軟體開發
登入
我忘記帳戶名和密碼了
新增帳戶
語言
手冊
語言
手冊
×
登入
登入名稱
密碼
×
我忘記帳戶名和密碼了
繁體中文翻譯狀態
類別:
軟體
人
PersonalForge
Magazine
Wiki
搜尋
OSDN
>
軟體搜索
>
Internet
>
WWW/HTTP
>
Dynamic Content
>
XOOPS
>
Ticket List/Search
>
待辦事項 #9544
XOOPS
描述
專案概要
開發人員儀表板
專案的網頁
Developers
Image Gallery
List of RSS Feeds
活動
使用統計
歷史
檔案下載
發布列表
Stats
原始碼
儲存庫列表
CVS
查看儲存庫
待辦事項
待辦事項列表
里程碑列表
類型列表
元件列表
List of frequently used tickets/RSS
新增待辦事項
文檔
溝通
討論區
討論區列表
幫助論壇 (1)
公開討論 (1)
通信論壇
通信論壇列表
xoops-cvslog
新聞
待辦事項 #9544
待辦事項列表
新增待辦事項
RSS
Bug that module template deleted all
啟用日期:
2006-12-08 20:33
最後更新:
2006-12-14 07:56
監視
ON
OFF
回報者:
mumincacao
負責人:
(del#8225)
類型:
XOOPSCube2.1 Bugs
狀態:
關閉
元件:
(無)
里程碑:
(無)
優先權:
7
嚴重程度:
5 - 中
處理結果:
修正
檔案:
無
細節
回覆
moduleのinstall失敗時に掃除する機能が一定条件下で
module用templateを全部消しちゃうみたいです。
条件は
midが決まる前にinstallが失敗すること
で,具体的には
Table 'xxxxxx' already exists
なかんじでinstallが失敗すると削除するtemplateを探すため
に
$tplHandler->find(null, 'module', null);
が実行されて,結果的に
SELECT * FROM xxx_tplfile WHERE (tpl_type = 'module')
ORDER BY tpl_refid
ってSQLで削除対象を抽出するために
tpl_type が module のtemplateはすべて削除されちゃいま
す。
対策としては
/modules/legacy/admin/class/ModuleInstallUtils.class.ph
p
にあるtemplateを削除するめそっど
Legacy_ModuleInstallUtils::uninstallAllOfModuleTemplate
s()
の先頭に
if($module->get('mid') == null)
{
return;
}
みたいにmidがまだ決まっていないときは削除処理をすきっぷ
するといいみたいです。
※他の削除処理はmidが空でも影響がないっぽいけどすきっぷ
したほうがいいかも?
Ticket History (3/4 Histories)
Show older Histories
2006-12-08 21:05
Updated by:
mumincacao
評語
回覆
Logged In: YES
user_id=24376
たぶんきっとこっちのほうがきれいな処理っぽいので修正を・・・
/modules/legacy/admin/actions/ModuleInstallAction.class.php
L150-
Legacy_ModuleInstallAction::execute()
で executeInstall に失敗したときの処理を
if (!$this->mInstaller->executeInstall())
{
if(!$this->mXoopsModule->get('mid') == null)
{
$this->mInstaller->mLog->addReport('Force
Uninstallation is started.');
$dirname = $this->mXoopsModule->get('dirname');
$uninstaller =&
Legacy_ModuleInstallUtils::createUninstaller($dirname);
$uninstaller->setForceMode(true);
$uninstaller->setCurrentXoopsModule($this-
>mXoopsModule);
$uninstaller->executeUninstall();
}
}
こんなかんじでまだmidが決定してなければ削除処理をしないなん
てどうですか?
2006-12-08 22:50
Updated by:
(del#8225)
負責人
Update from
(無)
to
nobunobu
優先權
Update from
5 - 中
to
7
處理結果
Update from
無
to
Accepted
評語
回覆
Logged In: YES
user_id=8225
>こんなかんじでまだmidが決定してなければ削除処理をしないなん
てどうですか?
報告ありがとうございます。
インストールで複数テーブル作成途中でこけた場合のことを考える
と、midが決定していなくても作成したテーブルは削除した方が良
いかもしれないので、元々のバグ報告内の
Legacy_ModuleInstallUtils中でmidチェックする方が、方法として
は確実かもしれないですね。
2006-12-08 23:45
Updated by:
(del#8225)
處理結果
Update from
Accepted
to
修正
評語
回覆
Logged In: YES
user_id=8225
I added a $this->_mXoopsModule->get('mid') Null check in
Legacy_ModuleUninstaller::executeUninstall().
And commit this file into CVS.
2006-12-14 07:56
Updated by:
(del#8225)
Ticket Close date
is changed to
2006-12-14 07:56
狀態
Update from
開啟
to
關閉
Attachment File List (
0
)
Attachment File List
No attachments
編輯
新增評語
You are not logged in.
I you are not logged in, your comment will be treated as an anonymous post. »
登入
新增評語
預覽
提交
module用templateを全部消しちゃうみたいです。
条件は
midが決まる前にinstallが失敗すること
で,具体的には
Table 'xxxxxx' already exists
なかんじでinstallが失敗すると削除するtemplateを探すため
に
$tplHandler->find(null, 'module', null);
が実行されて,結果的に
SELECT * FROM xxx_tplfile WHERE (tpl_type = 'module')
ORDER BY tpl_refid
ってSQLで削除対象を抽出するために
tpl_type が module のtemplateはすべて削除されちゃいま
す。
対策としては
/modules/legacy/admin/class/ModuleInstallUtils.class.ph
p
にあるtemplateを削除するめそっど
Legacy_ModuleInstallUtils::uninstallAllOfModuleTemplate
s()
の先頭に
if($module->get('mid') == null)
{
return;
}
みたいにmidがまだ決まっていないときは削除処理をすきっぷ
するといいみたいです。
※他の削除処理はmidが空でも影響がないっぽいけどすきっぷ
したほうがいいかも?