XOOPSCubeLegacyの管理画面で、$mRoot->mController->executeRedirect()してもあのおなじみのリダイレクト画面にならずに、普通にhttp-headerのリダイレクトになっていた。
んんん〜って思って調べてみたら、結構根が深かった。深かったので、実は半分あきらめていたんだけど。
- 自分は管理画面で、cp_functions.php をロードしてなくて、XOOPS_CPFUNC_LOADED 定数をDefineしてなかった
- そのため、Legacy_Controller::executeRedirect()が、生HTML吐き出しではなくdb:system_redirect.htmlの方に行ってた
- system_redirect.htmlはlegacy_redirect.htmlのシノニム
- legacy_redirect.htmlなんだけど、表側で使ってるテーマがhd_defaultというお手軽高速化(普通にhttp-redirectを吐くやつ)になってた
なので、解決方法としては
- 管理画面ではXOOPS_CPFUNC_LOADEDを定義する
- 管理画面に行くユーザーは表側のhd_defaultを使わせない
という方法に。あきらかに前者が良いのでそれで対応。うーん、全然わからなかったぞ。