プロジェクト

全般

プロフィール

Bug(バグ) #3932

pc,mobile両方のContentを持つアプリがホーム画面およびプロフィール画面に表示されない

Youichi Kimuraほぼ8年前に追加.

ステータス:
New(新規)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
2016-04-20
期日:
進捗率:

0%

3.6 で発生するか:
Yes (はい)
[QA]バグ通知済:
いいえ
3.8 で発生するか:
Unknown (未調査)

説明

Overview (現象)

https://gist.github.com/upsilon/951203 のように PC, mobile 向けの両方の Content を持つアプリが、ホーム画面とプロフィール画面の「アプリケーションボックス」ガジェットの位置に表示されない。

Causes (原因)

source:apps/pc_frontend/modules/application/actions/components.class.php@6d81bffd#L106

  public function executeRenderHomeApplications(sfWebRequest $request)
  {
    $this->memberApplications = Doctrine::getTable('MemberApplication')->getMemberApplications(null, null, true, true, false);
  }

ホーム画面でアプリケーションを表示するアクションでは、上記のように MemberApplicationTable::getMemberApplications() メソッドの引数 $isMobile に false を指定している。

MemberApplicationTable::getMemberApplications() メソッドの引数 $isPc, $isMobile は true, false, null の三値が想定されており、true, false の場合は application.is_pc = ? のような条件が加わり、null の場合は is_pc, is_mobile のそれぞれに対する条件が付かなくなる。
この場合、$isPc に true、$isMobile に false が指定されているため、application.is_pc = 1 AND application.is_mobile = 0 のような条件が加わることになり、is_mobile が 1 であるアプリケーションは is_pc の値に関わらず条件に該当しなくなる。

このことが、mobile 向け Content を持つアプリケーションが PC 向けの Content も持つか否かに関わらずホーム画面およびプロフィール画面で非表示となる原因である。

Way to fix (修正内容)

pc_frontend のホーム画面およびプロフィール画面の場合、application.is_mobile の値に関わらず application.is_pc = 1 のみ満たしていれば十分であるため、MemberApplicationTable::getMemberApplications() メソッドの引数 $isMobile には false ではなく null に修正する必要がある。

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