tmplvars.inc.php に新設された splitOption という関数の不具合のように見えます。
コード: 全て選択
function splitOption($value)
{
if(is_array($value)) $value = $value['0'];
if(strpos($value,'==')===false) $label = $value;
else list($label,$value) = explode('==',$value,2);
return array($label,$value);
}
@SELECT で得た pagetitle, id の組み合わせを行毎に分解されたものが引数 $value で渡されます。テキストで xx==yy||zz=ww 等としている場合は||で分割した xx==yy 型式のテキストが渡されるようです。
$valueが配列だと $value に $value['0'] をいれているのですが、こちらが pagetitle にあたるもので、その後に$label に $value (pagetitleにあたるもの)をいれてしまっているため、結果的に$label も $value も同じpagetitleに当たるものが入ってしまっています。
a) @SELECTで pagetitle, id 型式だと配列が入力
b) @SELECT または直接入力 xx||zz 型式(または pagetitle のみ)の場合はプレーンテキストが入力
c) 直接入力で xx==yy||zz=ww 型式だと xx==yy 型式のプレーンテキストが入力
の3パターンのようなので、元の処理を生かしつつ私の言いたいことを表すと…
コード: 全て選択
function splitOption($value)
{
if(is_array($value)) {
$label=$value[0];
$value=$value[1];
} else {
if(strpos($value,'==')===false) $label = $value;
else list($label,$value) = explode('==',$value,2);
}
return array($label,$value);
}
となるイメージです(これで問題が解決することを確認しています)。
isSelected関数の方は現状のままで問題なさそうです。