アカウント情報画面で、そのユーザの投稿履歴がモジュール毎に5件ずつ表示されることはよくご存じだと思います。
X2では、この"5"という数字は、ルートコントローラであるuserinfo.phpに直書きしてあるのですが、Cube2.1では当然そんな乱暴なコーディングはしていません。
Cube2.1 Legacyで、この5を変更するために追った手順をメモ代わりに書いておきます。
まずは、ルートコントローラであるuserinfo.phpを開いてみます。
require_once "mainfile.php";
XCube_DelegateUtils::call("Legacypage.Userinfo.Access");
たった、これだけです。素晴らしい! …けど、いったい、何をどうすればいいのか。
普通の人はここで途方に暮れてしまうでしょう。
やっていることは、"Legacypage.Userinfo.Access" というデリゲートをコールしているのです。だから、やるべきは、この文字列をgrepにかけることです。
すると、一箇所引っかかります。
modules/user/preload/Primary/Primary.class.php
$file = XOOPS_ROOT_PATH . "/modules/user/kernel/LegacypageFunctions.class.php";
$root->mDelegateManager->add("Legacypage.Userinfo.Access", "User_LegacypageFunctions::userinfo", $file);
このpreloadというのは特殊なフォルダで、ここに置いてあるファイルに記述されたクラスは条件が合えば自動的にロードされます。
ここでやっていることは、そのデリゲートの登録です。grepでヒットした行を読めば、"Legacypage.Userinfo.Access"に対して登録されたデリゲートは、"User_LegacypageFunctions::userinfo" であることがわかります。
そして、その1行上を見れば、User_LegacypageFunctionsというクラスは、/modules/user/kernel/LegacypageFunctions.class.php で定義されているだろう、ということがわかります。
そのファイルをさっそく開いてみると、実は、modules/user/index.php?action=UserInfo へとリダイレクトしているだけだと判ります。
単にリダイレクトするだけなのに、こんなにまどろっこしいことをやるのか!
そう驚くかもしれません。
(実は私にもその価値は判りません。そして、サーバ管理者としては、こんな重いコードは勘弁してくれ、というのが正直なところです
)
でも、これで追い方がだいたいわかったと思います。
リダイレクト先は、modules/user/index.php?action=UserInfo ですから、mojaviなどのパターンから推測して、modules/user/actions/UserInfo* というファイルに記述があると当たりをつけ、modules/user/actions/UserInfoAction.class.php を開けば、目的の行が見つかります。
define ('USER_USERINFO_MAXHIT', 5);
見つけた後は、ここを書き換えるしかないのか、Delegateなどで解決できないのか、という検討に移るのですが、それについてはまた次回以降に。