Index: branches/RC/core/kernel/kbase.php =================================================================== diff -u -r11661 -r11742 --- branches/RC/core/kernel/kbase.php (.../kbase.php) (revision 11661) +++ branches/RC/core/kernel/kbase.php (.../kbase.php) (revision 11742) @@ -669,19 +669,20 @@ function getLinkedInfo($special = '', $guess_special = false) { $parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix'); - if($parent_prefix) - { + if ($parent_prefix) { // if this is linked table, then set id from main table - $table_info = Array( + $table_info = Array ( 'TableName' => $this->Application->getUnitOption($this->Prefix,'TableName'), 'IdField' => $this->Application->getUnitOption($this->Prefix,'IDField'), 'ForeignKey' => $this->Application->getUnitOption($this->Prefix,'ForeignKey'), 'ParentTableKey' => $this->Application->getUnitOption($this->Prefix,'ParentTableKey'), 'ParentPrefix' => $parent_prefix ); + if (is_array($table_info['ForeignKey'])) { $table_info['ForeignKey'] = getArrayValue($table_info, 'ForeignKey', $parent_prefix); } + if (is_array($table_info['ParentTableKey'])) { $table_info['ParentTableKey'] = getArrayValue($table_info, 'ParentTableKey', $parent_prefix); } @@ -692,8 +693,10 @@ if (!$main_object->isLoaded() && $guess_special) { $main_object =& $this->Application->recallObject($parent_prefix); } + return array_merge($table_info, Array('ParentId'=> $main_object->GetDBField( $table_info['ParentTableKey'] ) ) ); } + return false; }