const に変数を使うと言うのは想定していませんでした。
確かに使える方が便利ですね。
次の変更で使えるようになります。
--- ccenter/functions.php 21 9月 2008 18:00:22 +0900 1.27
+++ ccenter/functions.php 19 10月 2008 02:04:23 +0900
@@ -202,7 +202,7 @@
break;
case 'hidden':
case 'const':
- $val = join(',', $item['options']);
+ $val = eval_user_value(join(',', $item['options']));
break;
case 'file':
$val = ''; // filename
@@ -287,9 +287,10 @@
return $updates;
}
-function cc_make_widget($item) {
- global $myts, $xoopsUser, $defuser;
+function eval_user_value($str) {
+ static $defuser;
if (empty($defuser)) {
+ global $xoopsUser;
$defuser = array();
$user = is_object($xoopsUser)?$xoopsUser:new XoopsUser;
$keys = array_keys($user->getVars());
@@ -303,6 +304,11 @@
}
}
}
+ return str_replace(array_keys($defuser), $defuser, $str);
+}
+
+function cc_make_widget($item) {
+ global $myts;
$input = '';
$fname = $item['field'];
$names = "name='$fname' id='$fname'";
@@ -316,7 +322,7 @@
switch($type) {
case 'hidden':
case 'const':
- $input=htmlspecialchars(join(',', $options), ENT_QUOTES);
+ $input=htmlspecialchars(eval_user_value(join(',', $options)), ENT_QUOTES);
break;
case 'select':
$def = '';
@@ -413,7 +419,7 @@
}
}
}
- $val = htmlspecialchars(str_replace(array_keys($defuser), $defuser, $val), ENT_QUOTES);
+ $val = htmlspecialchars(eval_user_value($val), ENT_QUOTES);
if ($type == 'textarea') {
$estr = get_attr_value($attr, 'rows');
if (!empty($estr)) $astr .= ' rows="'.$estr.'"';