Bug(バグ) #965
完了
プラグインを無効にした状態でmigrateを実行するとフォームに不要な要素が表示されるようになる
Kiwa Sakai さんが14年以上前に追加.
14年以上前に更新.
説明
発生確認バージョン¶
OpenPNE 3.4.x
1. プラグインAを無効にする
2. migrateを実行する
3. プラグインAを有効にする
4. プラグインAのフォームに不要な要素が表示されるようになる
関連するチケット
1 (0件未完了 — 1件完了)
- 担当者 を Shogo Kawahara にセット
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を 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')))
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
確かにその通りです。修正します。
Kousuke Ebihara は書きました:
問題ないように見えますが、パフォーマンスの観点から以下二点指摘させてください(細かいですが……)
opProjectConfiguration に正規表現でマッチングをおこなっている箇所がありますが、sf_task_name をセットしたい状況では $subject にはタスクのクラスインスタンスが格納されているのですから、 instanceof 演算子で sfTask を継承しているかどうかをチェックすればよいはずです。
[...]
また、 opApplicationConfiguration にも正規表現でマッチングをおこなっている箇所がありますが、前述のようなコードでは sf_task_name にタスクのクラス名以外の文字列が渡ることは考えにくいため、 Task で終わっている文字列かどうかをチェックする必要はないと思われます。
Task で終了しているかどうかのチェックが不要であるという前提だと、 sfDoctrineBuild で開始されているかどうかをチェックするだけになるので、正規表現よりも strpos() でのチェックの方がお手軽かつパフォーマンス的に有利ということになると思いますがどうでしょうか。
[...]
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 50 から 100 に変更
他の形式にエクスポート: Atom
PDF