tohokuaikiのチラシの裏

技術的ネタとか。

XOOPSCubeの管理画面でのお手軽高速化リダイレクトにハマる

XOOPSCubeLegacyの管理画面で、$mRoot->mController->executeRedirect()してもあのおなじみのリダイレクト画面にならずに、普通にhttp-headerのリダイレクトになっていた。


んんん〜って思って調べてみたら、結構根が深かった。深かったので、実は半分あきらめていたんだけど。

  1. 自分は管理画面で、cp_functions.php をロードしてなくて、XOOPS_CPFUNC_LOADED 定数をDefineしてなかった
  2. そのため、Legacy_Controller::executeRedirect()が、生HTML吐き出しではなくdb:system_redirect.htmlの方に行ってた
  3. system_redirect.htmlはlegacy_redirect.htmlのシノニム
  4. legacy_redirect.htmlなんだけど、表側で使ってるテーマがhd_defaultというお手軽高速化(普通にhttp-redirectを吐くやつ)になってた


なので、解決方法としては

  • 管理画面ではXOOPS_CPFUNC_LOADEDを定義する
  • 管理画面に行くユーザーは表側のhd_defaultを使わせない

という方法に。あきらかに前者が良いのでそれで対応。うーん、全然わからなかったぞ。