今までは、整数型やブール型のフィールドを追加しましたが、今回はテキスト型を追加してみます。今まで同じで良い、と思うかも知れませんが、さにあらず。整数型と同じ処理だと、Script Insertion脆弱になってしまいます。
手順は同様です。
I. DB にALTER TABLE を発行する
ALTER TABLE (prefix)_users ADD user_map text not null default '';
II. テンプレートを書き換える
minihaku_edituser.html (必要なら minihaku_register.html にも) に挿入
<textarea name="user_map" id="user_map" cols="50" rows="6" /><{$user_map|escape}></textarea>
<tr>
<td class="head">地図</td>
<td align="center" class="odd"><{$user_uid|minihaku_userinfo:"user_map":"uid"}></td>
</tr>
$extra_fields = array(
'user_map' => array(
'initval' => '' ,
) ,
) ;
if( empty( $minihaku_uid4whr ) ) {
foreach( $extra_fields as $key => $attribs ) {
$allowed_requests[$key] = $attribs['initval'] ;
}
} else {
$db =& Database::getInstance() ;
list( $allowed_requests['user_map'] ) = $db->fetchRow( $db->query( "SELECT user_map FROM ".$db->prefix("users")." WHERE uid=$minihaku_uid4whr" ) ) ;
// for the plugin of modifier.minihaku_userinfo.php
$myts =& MyTextSanitizer::getInstance() ;
$fields4html['user_map'] = $myts->displayTarea( $allowed_requests['user_map'] , 0 , 1 , 1 , 1 , 1 ) ;
}
$extra_fields = array(
'user_prefecture' => array(
'initval' => 0 ,
'options' => array(
0 => '' ,
1 => '北海道' ,
2 => '青森' ,
(以下略)
),
) ,
) ;
システム管理用と思われるphpファイルのソースを見ていてもしやとは思っていたのですが、やはり本当に必要だというならコアHackするしかない、ということは理解いたしました。
ところで、GIJOEさんのコメントによるとXoopsCubeではシステム管理画面がテンプレート化されてきているような印象も受けるのですが、この局面でX2をコアHackするのとXCの開発が落ち着くのを待つのではどちらが賢明なのでしょう?