プロジェクト

全般

プロフィール

Bug(バグ) #965

完了

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

Kiwa Sakai さんが14年以上前に追加. 14年以上前に更新.

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

100%

予定工数:
3.6 で発生するか:
3.8 で発生するか:

説明

発生確認バージョン

OpenPNE 3.4.x

手順

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


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

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

操作

Shogo Kawahara さんが14年以上前に更新

  • 担当者 を削除 (Shogo Kawahara)

Shogo Kawahara さんが14年以上前に更新

  • 担当者Shogo Kawahara にセット

Shogo Kawahara さんが14年以上前に更新

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

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

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

Shogo Kawahara さんが14年以上前に更新

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

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

Kousuke Ebihara は書きました:

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

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

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

Shogo Kawahara さんが14年以上前に更新

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

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

Kousuke Ebihara さんが14年以上前に更新

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

Kiwa Sakai さんが14年以上前に更新

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

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