プロジェクト

全般

プロフィール

Bug(バグ) #965

プラグインを無効にした状態でmigrateを実行するとフォームに不要な要素が表示されるようになる

Kiwa Sakaiほぼ14年前に追加. ほぼ14年前に更新.

ステータス:
Fixed(完了)
優先度:
Immediate(今すぐ)
担当者:
対象バージョン:
開始日:
2010-04-19
期日:
進捗率:

100%

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

説明

発生確認バージョン

OpenPNE 3.4.x

手順

1. プラグインAを無効にする
2. migrateを実行する
3. プラグインAを有効にする
4. プラグインAのフォームに不要な要素が表示されるようになる


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #1045: プラグインを無効にした状態でmigrateを実行するとフォームに不要な要素が表示されるようになる Fixed(完了) 2010-05-11

関係しているリビジョン

リビジョン 35aeb0a6 (差分)
Shogo Kawaharaほぼ14年前に追加

fixed the process of configuration, bacause doctrine:build task generate some unnecessary file of form class (fixes #965)

リビジョン 0260664a (差分)
Shogo Kawaharaほぼ14年前に追加

fixed the process of configuration to the performance (fixes #965)

履歴

#1 Shogo Kawaharaほぼ14年前に更新

  • 担当者 を削除 (Shogo Kawahara)

#2 Shogo Kawaharaほぼ14年前に更新

  • 担当者Shogo Kawahara にセット

#3 Shogo Kawaharaほぼ14年前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 35aeb0a6516260959ba8877d89997c1229835abc で適用されました。

#4 Kousuke Ebiharaほぼ14年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

問題ないように見えますが、パフォーマンスの観点から以下二点指摘させてください(細かいですが……)

opProjectConfiguration に正規表現でマッチングをおこなっている箇所がありますが、sf_task_name をセットしたい状況では $subject にはタスクのクラスインスタンスが格納されているのですから、 instanceof 演算子で sfTask を継承しているかどうかをチェックすればよいはずです。

$subject = $event->getSubject();
if (preg_match('/Task$/', get_class($subject)))
{
  sfConfig::set('sf_task_name', get_class($subject));
}

また、 opApplicationConfiguration にも正規表現でマッチングをおこなっている箇所がありますが、前述のようなコードでは sf_task_name にタスクのクラス名以外の文字列が渡ることは考えにくいため、 Task で終わっている文字列かどうかをチェックする必要はないと思われます。
Task で終了しているかどうかのチェックが不要であるという前提だと、 sfDoctrineBuild で開始されているかどうかをチェックするだけになるので、正規表現よりも strpos() でのチェックの方がお手軽かつパフォーマンス的に有利ということになると思いますがどうでしょうか。

if (!preg_match('/^sfDoctrineBuild.*Task$/', sfConfig::get('sf_task_name')))

#5 Shogo Kawaharaほぼ14年前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更

確かにその通りです。修正します。

Kousuke Ebihara は書きました:

問題ないように見えますが、パフォーマンスの観点から以下二点指摘させてください(細かいですが……)

opProjectConfiguration に正規表現でマッチングをおこなっている箇所がありますが、sf_task_name をセットしたい状況では $subject にはタスクのクラスインスタンスが格納されているのですから、 instanceof 演算子で sfTask を継承しているかどうかをチェックすればよいはずです。
[...]

また、 opApplicationConfiguration にも正規表現でマッチングをおこなっている箇所がありますが、前述のようなコードでは sf_task_name にタスクのクラス名以外の文字列が渡ることは考えにくいため、 Task で終わっている文字列かどうかをチェックする必要はないと思われます。
Task で終了しているかどうかのチェックが不要であるという前提だと、 sfDoctrineBuild で開始されているかどうかをチェックするだけになるので、正規表現よりも strpos() でのチェックの方がお手軽かつパフォーマンス的に有利ということになると思いますがどうでしょうか。
[...]

#6 Shogo Kawaharaほぼ14年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更

更新履歴 0260664ac8c4cbe9cd716b88f5a7d8c26f0da61f で適用されました。

#7 Kousuke Ebiharaほぼ14年前に更新

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

#8 Kiwa Sakaiほぼ14年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率50 から 100 に変更

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