XoopsX / legacy

XOOPS Cube Legacy base repository
15 stars 11 forks source link

mContext->mModule is not null on the top page #89

Open hodakamio opened 6 years ago

hodakamio commented 6 years ago

ゲスト以外でトップページにアクセスするとつぎのエラーが出ます。

Fatal error: Call to undefined method stdClass::isActive() in
 ドキュメントルート/modules/legacy/kernel/Legacy_Controller.class.php on line 958

環境は、さくらレンタルサーバー、xoopsX/pilot、php7.2です。 ちなみに、トップのときのmRoot->mContextの内容は、

["mModule"]=>
    object(stdClass)#146 (1) {`
        ["mXoopsModule"]=>
            NULL
    }
["mXoopsModule"]=>
    NULL

なので、該当のログインユーザーの場合の行:

if ($this->mRoot->mContext->mModule != null && $this->mRoot->mContext->mModule->isActive()) {

が冒頭のエラーを吐く感じです。とりあえず、

if ($this->mRoot->mContext->mModule instanceof Legacy_ModuleAdapter && $this->mRoot->mContext->mModule->isActive()) {

として回避しましたが、$this->mRoot->mContext->mModuleがnullかどうかを判定する箇所は他にもあると思われますので、ベスト解ではないと思います。