プロジェクト

全般

プロフィール

Bug(バグ) #1606

完了

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

Hidenori Goto さんが約14年前に追加. 7年以上前に更新.

ステータス:
Works for me(再現せず)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
2010-09-22
期日:
進捗率:

0%

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

説明

詳細

  • 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)

パッチ

添付参照


ファイル


関連するチケット 2 (2件未完了0件完了)

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

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

操作

Kousuke Ebihara さんが約14年前に更新

  • 対象バージョンOpenPNE 3.7.0 にセット
  • 3.6 で発生するかYes にセット

Shouta Kashiwagi さんが12年以上前に更新

  • 対象バージョンOpenPNE 3.7.0 から 252 に変更

Shouta Kashiwagi さんが12年以上前に更新

  • 対象バージョン252 から OpenPNE 3.8.x に変更

誠二 天重 さんが10年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 担当者誠二 天重 にセット
  • 進捗率0 から 50 に変更
  • 3.8 で発生するかUnknown (未調査) にセット

添付のパッチの内容で以下にプルリクエストしました。
https://github.com/openpne/OpenPNE3/pull/142

Shinichi Urabe さんが10年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.12 に変更

誠二 天重 さんが10年以上前に更新

誠二 天重 さんが10年以上前に更新

誠二 天重 さんが10年以上前に更新

  • 対象バージョンOpenPNE 3.8.12 から OpenPNE 3.8.x に変更

誠二 天重 さんが10年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.9.0-old に変更

Shinichi Urabe さんが10年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです
master に https://github.com/openpne/OpenPNE3/pull/142 を取り込みました

誠二 天重 さんが10年以上前に更新

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 を返却するメソッドになります。

誠二 天重 さんが10年以上前に更新

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 進捗率70 から 50 に変更

Shinichi Urabe さんが10年以上前に更新

誠二 天重 は書きました:

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

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

誠二 天重 さんが10年以上前に更新

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

Shinichi Urabe さんが10年以上前に更新

  • ステータスRejected(差し戻し) から New(新規) に変更
  • 担当者 を削除 (誠二 天重)
  • 進捗率50 から 0 に変更

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

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

kaoru n さんが7年以上前に更新

  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更

isao sano さんが7年以上前に更新

  • ステータスNew(新規) から Works for me(再現せず) に変更

再現しませんでした。

他の形式にエクスポート: Atom PDF