PEAK XOOPS - Cube 2.1 ルートコントローラの追い方 (1) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : Cube 2.1 ルートコントローラの追い方 (1)
Poster : GIJOE on 2006-10-30 18:51:14 (14018 reads)

in englishin japanese
アカウント情報画面で、そのユーザの投稿履歴がモジュール毎に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などで解決できないのか、という検討に移るのですが、それについてはまた次回以降に。

Printer friendly page Send this story to a friend

Comments list

minahito  Posted on 2006/10/30 20:21
Quote:
(実は私にもその価値は判りません。そして、サーバ管理者としては、こんな重いコードは勘弁してくれ、というのが正直なところです

実は単に黎明期の残りコードだったりします;;
backend.php みたいに飛ばさずに直で描画に入るべきですよねこれ…メインメニューに user module もいらないし、追加カスタムでジャンプで飛ばしたい場合は優先デリゲートで入ればいいんですしね ^^;

Quote:
ここを書き換えるしかないのか、Delegateなどで解決できないのか、

+「最大値取得するのデリゲートにしてくれと要請するのか」
+「これくらい一般設定に突っ込んでくれと要請するのか」



と、連載をやりにくくしてどうする。;;
次回を楽しみにしています。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!