少々込み入っているのでブログにまとめる。
まず、いきなりリダイレクトされて面食らうのだが、WizMobileではpostメソッドで呼ばれたら$_GETパラメータは取得できないらしい。という事でPOSTメソッドを使うにも関わらず、URLにGETパラメータを埋め込んで呼び出している変則的な部分をPOSTパラメータに埋め込み直す。
xoops_trust_path/modules/d3blog /templates/inc_comment_form.html
themes/wmb_default/templates/d3blog/inc_comment_form.html
themes/mbxoops6/templates/d3blog/inc_comment_form.html
上記のいずれもpostメソッドなのにgetパラメータ渡しを目論んでいた。
<form name='d3blogCommentForm' id='d3blogCommentForm' action='<{$xoops_url}>/modules/<{$mydirname}>/index.php?page=comment_post' method='post'>
(そりゃないぜセニョール)なのでpostへ変更
<form name='d3blogCommentForm' id='d3blogCommentForm' action='<{$xoops_url}>/modules/<{$mydirname}>/index.php' method='post'>
<!-- comment rule -->
<div style="text-align: center; <{$smarty.const.MBX_FS_XSMALL}>">
(<{$rule_text}>)
</div>
<{$smarty.const.MBX_BLANK_TAG}>
<!-- hidden items -->
<input type='hidden' name='page' id='page' value='comment_post' />
こんな感じで hidden items 欄へパラメータを埋め込み直す。しかーし、このpageという変数はgetでしか受け取ってくれない。という事で次は受け取り部にpost処理を追加
xoops_trust_path/modules/d3blog /main.php
$mytrustdirpath = dirname( __FILE__ ) ;
$page = preg_replace( '/[^a-zA-Z0-9_-]/' , '' , @$_GET['page'] );
の1行下に追加。
// Hacked by a.k.a Bluemoon
if (isset($_POST['page'])) $page = preg_replace( '/[^a-zA-Z0-9_-]/' , '' , @$_POST['page'] );
で、気を取り直してデバッグするとリダイレクトされる。しかしコメント投稿は成功していた。じゃリダイレクトがへんじゃねとさらにハックする。
xoops_trust_path/modules/d3blog /main/comment_post.php
以下、書込み成功後のリダイレクトがどーだったかというと
if (!isset($comment_post_results)) {まあ、通常のブラウザなら問題ないんだけどWizMobile的にはきちんとXOOPS_URLが記載されていないのとNGらしい。という事でちゃんと頭から正式なURIを入れてみる。
// if the comment is active, redirect to posted comment
if ($comment->getVar('com_status') == XOOPS_COMMENT_ACTIVE) {
redirect_header($redirect_page.'='.$com_itemid.'&com_id='.$newcid.'&com_rootid='.$com_rootid.'&com_mode='.$com_mode.'&com_order='.$com_order.'#comment'.$newcid, 2, _CM_THANKSPOST);
} else {
// not active, so redirect to top comment page
redirect_header($redirect_page.'='.$com_itemid.'&com_mode='.$com_mode.'&com_order='.$com_order.'#comment'.$newcid, 2, _CM_THANKSPOST);
}
}
if (!isset($comment_post_results)) {
// Hacked by a.k.a Bluemoon start
// if the comment is active, redirect to posted comment
if ($comment->getVar('com_status') == XOOPS_COMMENT_ACTIVE) {
$redirect = sprintf('%s/modules/%s/', XOOPS_URL, $mydirname) . $redirect_page.'='.$com_itemid.'&com_id='.$newcid.'&com_rootid='.$com_rootid.'&com_mode='.$com_mode.'&com_order='.$com_order.'#comment'.$newcid;
} else {
// not active, so redirect to top comment page
$redirect = sprintf('%s/modules/%s/', XOOPS_URL, $mydirname) . $redirect_page.'='.$com_itemid.'&com_mode='.$com_mode.'&com_order='.$com_order.'#comment'.$newcid;
}
redirect_header($redirect, 2, _CM_THANKSPOST);
// Hack end
}
おK。やたらハマって他の作業しながらだが1週間位掛かってしまった。orz
最近マックに開発環境が移行したのでimodeシュミレータとかVMwareで済ましていたのだが、流石にVMwareにxampp入れるのも面倒なのでサーバ直でつついていたのがいけなかった.。しかも前に使っていたWindowsXPな環境がimodeシュミレータ何故かローカルにつながらず最後はauの openwave SDK 6.2でのソース表示に助けられた始末。これってもうダウンロードできないんじゃなかったっけ?(未確認)まあそんなこんなで、WindowsXPな環境はガラケーがある限り取っておかねばなるまい。
ああ、これらGPL V2なので訂正したら私のコメントも(いじってみた)記念に入れておいて欲しい。