PEAK XOOPS - bulletin2をCube2.1 betaで動かす in englishin japanese

Archive | RSS |
XOOPS
XOOPS : bulletin2をCube2.1 betaで動かす
Poster : GIJOE on 2006-10-22 17:28:03 (7763 reads)

in englishin japanese
今まで何度も書いていますが、Cube2.1betaでは、管理者モードか公開モードかの切替タイミングが厳密になっていて、modules/(dirname)/admin/*.php 以外で、cp_header.php を読み込んだり、cp_header() を実行しようとすると、fatalエラーで止まります。

そんなわけで、すべてのD3モジュール(含altsys)について、管理画面はadmin/以下で動かすことにしたのですが、残る唯一のD3モジュールであるsuinさんのbulletin2は、手つかずでした。

本来なら、suinさんに対応していただくところですが、せっかくいろいろ楽しい留学生活を送っているのを邪魔するのは忍びない

というわけで、パッチを作ってみました。

2.04をダウンロードしたら、まずはminahitoさんのインストールパッチを当ててください。
http://homepage.mac.com/minahito/.Public/BulletinToA4.zip

そこへ、さらにこのパッチを上書きします。
http://www.peak.ne.jp/support/xoops/bulletin-2.04patch4cube2.1beta.tar.gz

ところが、実はこのパッチにも大どんでん返しがあって、このパッチを上書きしただけでは、権限設定ができません。(事実上使い物にならない)

というのも、bulletin2の権限設定には、onokazuさんが作ったことが保証されている数少ないコントローラである、grouppermform.php が使われているのです。(このコントローラは、極めて粗悪な作りで、あのCatzwolfさんもあきれかえったという逸話もあります

Cube2.1でも、このコントローラをエミュレートしているのですが、なにせ元の作りがおかしいものですから、相当に無理をしています。POSTデータの受け取り先がmodules/legacy/include/groupperm.php という時点でかなりキナ臭いです。

そして、そのPOSTデータ受け取り先は、cp_header.phpを読み込むのですが、ここで最初に書いた制限に引っかかります。つまりfatalで止まります。

これはある意味、コアのバグなので、修正していただくしかない、というところですが、今すぐ動かすなら、とりあえずストラテジの分岐処理をパッチするしかないでしょう。

modules/legacy/kernel/Legacy_Controller.class.php line139


		if(count($urlInfo)>=3) {
			if(strtolower($urlInfo[0])=="modules" && strtolower($urlInfo[2])=="admin"){
				$adminStateFlag=true;
			}
			
			elseif($urlInfo[0] == "modules" && $urlInfo[1] == "legacy" && 	$urlInfo[2] == "include") {
				$adminStateFlag=true;
			}
			
			elseif($urlInfo[0] == "modules" && $urlInfo[1] == "system" && substr($urlInfo[2], 0, 9) == "admin.php") {
				$adminStateFlag=true;
			}
		}
		elseif(substr($urlInfo[0], 0, 9) == "admin.php") {
			$adminStateFlag=true;
		}


Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2006/10/28 5:12
In Cube 2.1beta2, this problem was fixed.
minahito  Posted on 2006/10/23 18:20
ひとまずそのように legacy 側を修正しました。
これはもうこのままでもいいのかもしれません…… orz

cp_header() で途中できちんと切り替えができていないのは問題ですよね……
これはβからαにおけるルールの厳格化というより単なるミスの可能性な気がしてきました。

(もちろん admin/ 下にも index.php コントローラを置いていただければ助かります ^-^/)

あと、 XUGJ で話に上がっていた isAdmin(&$flag, $urlInfo) デリゲートも追加しました。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!