Bug(バグ) #3932
openpc,mobile両方のContentを持つアプリがホーム画面およびプロフィール画面に表示されない
0%
Description
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 に修正する必要がある。
No data to display