Bug(バグ) #1606
opPluginInstallTask::execute()で、モデルクラスの存在チェックが不完全
0%
Description
詳細¶
- lib/task/opPluginInstallTask.class.phpのisSnsConfigTableExists()メソッドで、sns_configテーブルの存在チェックを行っているが、モデルの作成が行われていない場合、SnsConfigTableクラスは存在しても、Doctrine::getTableでエラーが発生する(継承元のBaseSnsConfigTableクラスが存在しないため)
- OpenPNEのインストール処理の実行前にdatabases.ymlを手作業で作成し、--redoオプションでインストーラーを実行した場合、opPluginInstallTask::execute()内のdatabases.yml存在チェックはtrueになり、その後のSnsConfigの処理が実行されてしまう
現象の再現箇所¶
- OpenPNEインストールパッケージの初期状態にて、openpne:install実行前にconfig/databases.ymlを手作業で作成する
- openpne:install --redoでインストールを実行する
- プラグインのインストール処理でエラーになる
再現するバージョン¶
OpenPNE 3.7.0-DEV (1cd3238f9fe94d0bf4cc8ba7e955e911c1573e62)
パッチ¶
添付参照
Related issues
Associated revisions
(refs #1606) fix imperfections of existence check of the model class in opPluginInstallTask::execute()
Revert "(refs #1606) fix imperfections of existence check of the model class in opPluginInstallTask::execute()"
This reverts commit 4c0ac89a747f3ddb8d5acfe6696011c4b6007c6c.
History
#1
Updated by Kousuke Ebihara over 12 years ago
- Target version set to OpenPNE 3.7.0
- 3.6 で発生するか set to Yes
#2
Updated by Shouta Kashiwagi almost 11 years ago
- Target version changed from OpenPNE 3.7.0 to 252
#3
Updated by Shouta Kashiwagi almost 11 years ago
- Target version changed from 252 to OpenPNE 3.8.x
#4
Updated by 誠二 天重 over 8 years ago
- Status changed from New(新規) to Pending Review(レビュー待ち)
- Assignee set to 誠二 天重
- % Done changed from 0 to 50
- 3.8 で発生するか set to Unknown (未調査)
添付のパッチの内容で以下にプルリクエストしました。
https://github.com/openpne/OpenPNE3/pull/142
#5
Updated by Shinichi Urabe over 8 years ago
- Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.12
#6
Updated by 誠二 天重 over 8 years ago
- Copied to Backport(バックポート) #3631: opPluginInstallTask::execute()で、モデルクラスの存在チェックが不完全 added
#7
Updated by 誠二 天重 over 8 years ago
- Copied to Backport(バックポート) #3632: opPluginInstallTask::execute()で、モデルクラスの存在チェックが不完全 added
#8
Updated by 誠二 天重 over 8 years ago
- Target version changed from OpenPNE 3.8.12 to OpenPNE 3.8.x
#9
Updated by 誠二 天重 over 8 years ago
- Target version changed from OpenPNE 3.8.x to OpenPNE 3.9.0-old
#10
Updated by Shinichi Urabe over 8 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
レビューOKです
master に https://github.com/openpne/OpenPNE3/pull/142 を取り込みました
#11
Updated by 誠二 天重 over 8 years ago
diff --git a/lib/task/opPluginInstallTask.class.php b/lib/task/opPluginInstallTask.class.php
index e4426be..ccdebdc 100644
--- a/lib/task/opPluginInstallTask.class.php
+++ b/lib/task/opPluginInstallTask.class.php
@@ -60,7 +60,7 @@ EOF;
{
try
{
- if (class_exists('SnsConfigTable'))
+ if (class_exists('SnsConfigTable') && class_exists('BaseSnsConfigTable'))
{
return Doctrine_Manager::connection()
->import
修正内容が上記のようになっていますが、 BaseSnsConfigTable という名前のクラスファイルは doctrine:build-model 実行後にも生成されない(BaseSnsConfigクラスは生成される)ので、上記の修正は間違っているものと思います。
※上記修正だと、isSnsConfigTableExists メソッドが if 分岐内を通過することがないので、ほとんど常に(build後も) false を返却するメソッドになります。
#12
Updated by 誠二 天重 over 8 years ago
- Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
- % Done changed from 70 to 50
#13
Updated by Shinichi Urabe over 8 years ago
誠二 天重 は書きました:
[...]
修正内容が上記のようになっていますが、 BaseSnsConfigTable という名前のクラスファイルは doctrine:build-model 実行後にも生成されない(BaseSnsConfigクラスは生成される)ので、上記の修正は間違っているものと思います。
※上記修正だと、isSnsConfigTableExists メソッドが if 分岐内を通過することがないので、ほとんど常に(build後も) false を返却するメソッドになります。
上記指摘の通りだと思います
一旦修正を取り消して、プルリクエストをしてください
#14
Updated by 誠二 天重 over 8 years ago
https://github.com/openpne/OpenPNE3/pull/155
にてリバートのプルリクエストを投げました。
#15
Updated by Shinichi Urabe over 8 years ago
- Status changed from Rejected(差し戻し) to New(新規)
- Assignee deleted (
誠二 天重) - % Done changed from 50 to 0
Revert したプルリクエスト取り込みました。取消については
レビューはOKです
一旦チケットは新規に戻します
#17
Updated by kaoru n almost 6 years ago
- Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0
#18
Updated by isao sano almost 6 years ago
- Status changed from New(新規) to Works for me(再現せず)
再現しませんでした。