以下、解決メモです。
function getOwnerName($id) {
global $adb, $log;
$log->debug("Entering getOwnerName(" . $id . ") method ...");
$log->info("in getOwnerName " . $id);
$ownerList = getOwnerNameList(array($id));
return $ownerList[$id];
}
上記の関数の処理の最終行、$ownerList[$id]という配列。
この $id が配列のためエラーになってました。
配列のキーは数値か文字列じゃないとダメなので。
なのでとりあえず、
if(is_array($id)&&count($id)==1) $id = array_shift($id);
という処理を直前に挿入して解決しました。無理やりなコードですが、
他からどういう値が渡ってくる処理なのか分からなかったので、とりあえず
このようにしました。
とりあえず解決した後で気が付きましたが、
$log->debug("Entering getOwnerName(" . $id . ") method ...");
この時点でおかしいので、さらにこのgetOwnerName関数の呼び出し元を見ると
$modifiedby_id = $adb->query_result($result, 0, 'modifiedby');
$modifiedby = $app_strings['LBL_BY'] . getOwnerName($modifiedby_id);
こうなっていて、このへんから変ですね。処理としては変ではないけど、
$modifiedby_idっていう変数名なら配列ではなくint値や文字列を
渡す意図だと思うので。
$modifiedby = $app_strings['LBL_BY'] . getOwnerName($modifiedby_id[xxx]);
配列の要素名は忘れましたが、こう書くのがほんとの正解かなと思いました。
バグですね。
それとvtigerCRMのバージョンは5.4でしたが、
vtigercrm.jpで配布しているものは
5.3と6.0ですね。私の手元の環境と行番号が違うのはそのへんが関係している
みたいです。今回はF-RevoCRMでした。5.3も同様のバグがあるかもしれません。