プロジェクト

全般

プロフィール

Bug(バグ) #4431

pc_backend.php/member/invite にてサーバエラーが発生する

kaoru n約4年前に追加. ほぼ4年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2020-04-02
期日:
進捗率:

100%

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

説明

Overview (現象)

pc_backend.php/member/invite にアクセスすると以下のエラーが発生する。

Fatal error: Uncaught Error: Call to a member function pluralize() on null in (snip)/lib/form/doctrine/MemberConfigForm.class.php:106 Stack trace: #0 (snip)/lib/form/doctrine/MemberConfigForm.class.php(28): MemberConfigForm->setMemberConfigSettings() #1 (snip)/lib/form/MemberConfigForm/MemberConfigPcAddressForm.class.php(24): MemberConfigForm->__construct(NULL, Array, NULL) #2 (snip)/apps/pc_backend/modules/member/actions/actions.class.php(101): MemberConfigPcAddressForm->__construct(NULL, Array) #3 (snip)/lib/vendor/symfony/lib/action/sfActions.class.php(60): memberActions->executeInvite(Object(opWebRequest)) #4 (snip)/lib/vendor/symfony/lib/filter/sfExecutionFilter.class.php(92): sfActions->execute(Object(opWebRequest)) #5 (snip)/l in (snip)/lib/form/doctrine/MemberConfigForm.class.php on line 106

Causes (原因)

https://github.com/openpne/OpenPNE3/blob/OpenPNE-3.10.0/lib/form/doctrine/MemberConfigForm.class.php#L105

    $termMyFriend = Doctrine::getTable('SnsTerm')->get('my_friend');
にて、sns_term.application = 'pc_backend' & sns_term.name = 'my_friend' のレコードが存在しないため。

Way to fix (修正内容)

https://github.com/nishizoe/OpenPNE3/blob/OpenPNE-3.8.10/lib/i18n/opI18N.class.php#L23-L30

    $this->terms = Doctrine::getTable('SnsTerm');
    $application = sfConfig::get('sf_app');
    if ('pc_backend' == $application)
    {
        $application = 'pc_frontend';
    }
    $this->terms = Doctrine::getTable('SnsTerm');
    $this->terms->configure($this->culture, $application);
と同様に、configure を行う


子チケット

Backport(バックポート) #4432: pc_backend.php/member/invite にてサーバエラーが発生するFixed(完了)kaoru n

関係しているリビジョン

リビジョン 9c437233 (差分)
kaoru n約4年前に追加

(fixed #4431) 管理画面からのアクセス時に sns_term テーブルを検索する際は、アプリケーションを pc_frontend として動作するよう修正

リビジョン 787c1e2d (差分)
kaoru nほぼ4年前に追加

(fixed #4431) opI18N::__() にて SnsTerm の翻訳も反映されるので MemberConfigForm にて改めて $terms を作成しないよう修正

リビジョン f6883f50
kaoru nほぼ4年前に追加

Merge pull request #601 from nishizoe/t-4431

(fixed #4431) opI18N::__() にて SnsTerm の翻訳も反映されるので MemberConfigForm にて改めて $terms を作成しないよう修正

履歴

#1 kaoru n約4年前に更新

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

https://github.com/openpne/OpenPNE3/pull/601
にてプルリクエストしました

#2 kaoru n約4年前に更新

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

#3 Rimpei Ogawaほぼ4年前に更新

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

$i18n は opI18N のインスタンスだと思いますので、$terms を作成する処理自体が不要ではないかと思いました。

--- a/lib/form/doctrine/MemberConfigForm.class.php
+++ b/lib/form/doctrine/MemberConfigForm.class.php
@@ -102,14 +102,12 @@ class MemberConfigForm extends BaseForm
     }

     $i18n = sfContext::getInstance()->getI18N();
-    $termMyFriend = Doctrine::getTable('SnsTerm')->get('my_friend');
-    $terms = array('%my_friend%' => $termMyFriend->pluralize()->titleize());
     $publicFlagChoiceNames = ['age_public_flag', 'profile_page_public_flag'];
     foreach ($publicFlagChoiceNames as $name)
     {
       foreach ($configs[$name]['Choices'] as $key => $publicFlag)
       {
-        $configs[$name]['Choices'][$key] = $i18n->__($publicFlag, $terms, 'publicFlags');
+        $configs[$name]['Choices'][$key] = $i18n->__($publicFlag, array(), 'publicFlags');
       }
     }

#4 kaoru nほぼ4年前に更新

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

#5 Rimpei Ogawaほぼ4年前に更新

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

#6 isao sanoほぼ4年前に更新

  • ステータスPending Testing(テスト待ち) から Pending Merge(マージ待ち) に変更
  • 進捗率70 から 80 に変更

試験完了しました。
問題ありません。

#7 kaoru nほぼ4年前に更新

  • ステータスPending Merge(マージ待ち) から Fixed(完了) に変更
  • 進捗率80 から 100 に変更

マージしました

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