Project

General

Profile

Bug(バグ) #1606

opPluginInstallTask::execute()で、モデルクラスの存在チェックが不完全

Added by Hidenori Goto almost 14 years ago. Updated over 7 years ago.

Status:
Works for me(再現せず)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2010-09-22
Due date:
% Done:

0%

3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

Description

詳細

  • lib/task/opPluginInstallTask.class.phpのisSnsConfigTableExists()メソッドで、sns_configテーブルの存在チェックを行っているが、モデルの作成が行われていない場合、SnsConfigTableクラスは存在しても、Doctrine::getTableでエラーが発生する(継承元のBaseSnsConfigTableクラスが存在しないため)
  • OpenPNEのインストール処理の実行前にdatabases.ymlを手作業で作成し、--redoオプションでインストーラーを実行した場合、opPluginInstallTask::execute()内のdatabases.yml存在チェックはtrueになり、その後のSnsConfigの処理が実行されてしまう

現象の再現箇所

  1. OpenPNEインストールパッケージの初期状態にて、openpne:install実行前にconfig/databases.ymlを手作業で作成する
  2. openpne:install --redoでインストールを実行する
  3. プラグインのインストール処理でエラーになる

再現するバージョン

OpenPNE 3.7.0-DEV (1cd3238f9fe94d0bf4cc8ba7e955e911c1573e62)

パッチ

添付参照

0001-fixed-opPluginInstakkTask.patch View (781 Bytes) Hidenori Goto, 2010-09-22 18:15


Related issues

Copied to OpenPNE 3 - Backport(バックポート) #3631: opPluginInstallTask::execute()で、モデルクラスの存在チェックが不完全 New(新規) 2010-09-22
Copied to OpenPNE 3 - Backport(バックポート) #3632: opPluginInstallTask::execute()で、モデルクラスの存在チェックが不完全 New(新規) 2010-09-22

Associated revisions

Revision 4c0ac89a (diff)
Added by 誠二 天重 about 10 years ago

(refs #1606) fix imperfections of existence check of the model class in opPluginInstallTask::execute()

Revision e6a2e484
Added by Shinichi Urabe about 10 years ago

Merge pull request #142 from amashigeseiji/t-1606-opPlugin-install-class-check

(refs #1606) fix imperfections of existence check of the model class

Revision bae08f8e (diff)
Added by 誠二 天重 about 10 years ago

Revert "(refs #1606) fix imperfections of existence check of the model class in opPluginInstallTask::execute()"

This reverts commit 4c0ac89a747f3ddb8d5acfe6696011c4b6007c6c.

Revision 8e3d66d7
Added by Shinichi Urabe about 10 years ago

Merge pull request #155 from amashigeseiji/t-1606-revert

Revert "(refs #1606) fix imperfections of existence check of the model class in opPluginInstallTask::execute()"

History

#1 Updated by Kousuke Ebihara almost 14 years ago

  • Target version set to OpenPNE 3.7.0
  • 3.6 で発生するか set to Yes

#2 Updated by Shouta Kashiwagi over 12 years ago

  • Target version changed from OpenPNE 3.7.0 to 252

#3 Updated by Shouta Kashiwagi over 12 years ago

  • Target version changed from 252 to OpenPNE 3.8.x

#4 Updated by 誠二 天重 about 10 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 about 10 years ago

  • Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.12

#6 Updated by 誠二 天重 about 10 years ago

#7 Updated by 誠二 天重 about 10 years ago

#8 Updated by 誠二 天重 about 10 years ago

  • Target version changed from OpenPNE 3.8.12 to OpenPNE 3.8.x

#9 Updated by 誠二 天重 about 10 years ago

  • Target version changed from OpenPNE 3.8.x to OpenPNE 3.9.0-old

#10 Updated by Shinichi Urabe about 10 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 誠二 天重 about 10 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 誠二 天重 about 10 years ago

  • Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
  • % Done changed from 70 to 50

#13 Updated by Shinichi Urabe about 10 years ago

誠二 天重 は書きました:

[...]
修正内容が上記のようになっていますが、 BaseSnsConfigTable という名前のクラスファイルは doctrine:build-model 実行後にも生成されない(BaseSnsConfigクラスは生成される)ので、上記の修正は間違っているものと思います。
※上記修正だと、isSnsConfigTableExists メソッドが if 分岐内を通過することがないので、ほとんど常に(build後も) false を返却するメソッドになります。

上記指摘の通りだと思います
一旦修正を取り消して、プルリクエストをしてください

#14 Updated by 誠二 天重 about 10 years ago

https://github.com/openpne/OpenPNE3/pull/155
にてリバートのプルリクエストを投げました。

#15 Updated by Shinichi Urabe about 10 years ago

  • Status changed from Rejected(差し戻し) to New(新規)
  • Assignee deleted (誠二 天重)
  • % Done changed from 50 to 0

Revert したプルリクエスト取り込みました。取消については
レビューはOKです

一旦チケットは新規に戻します

#17 Updated by kaoru n over 7 years ago

  • Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0

#18 Updated by isao sano over 7 years ago

  • Status changed from New(新規) to Works for me(再現せず)

再現しませんでした。

Also available in: Atom PDF