Index: trunk/core/kernel/db/dbitem.php =================================================================== diff -u -r2787 -r2799 --- trunk/core/kernel/db/dbitem.php (.../dbitem.php) (revision 2787) +++ trunk/core/kernel/db/dbitem.php (.../dbitem.php) (revision 2799) @@ -513,7 +513,10 @@ $sql = 'SELECT COUNT(*) FROM %s WHERE ('.implode(') AND (',$where).') AND ('.$this->IDField.' <> '.(int)$this->ID.')'; $res_temp = $this->Conn->GetOne( str_replace('%s', $this->TableName, $sql) ); - $res_live = $this->Conn->GetOne( str_replace('%s', kTempTablesHandler::GetLiveName($this->TableName), $sql) ); + + $current_table_only = getArrayValue($params, 'current_table_only'); // check unique record only in current table + $res_live = $current_table_only ? 0 : $this->Conn->GetOne( str_replace('%s', kTempTablesHandler::GetLiveName($this->TableName), $sql) ); + $res = ($res_temp == 0) && ($res_live == 0); if(!$res) $this->FieldErrors[$error_field]['pseudo'] = 'unique'; @@ -723,8 +726,11 @@ $query = 'SELECT '.$title_field.' FROM '.$this->TableName.' WHERE '.$title_field.' = '.$this->Conn->qstr($new_name); - if (getArrayValue($master, 'ForeignKey') && isset($foreign_key)) { - $query .= ' AND '.$master['ForeignKey'].' = '.$foreign_key; + $foreign_key_field = getArrayValue($master, 'ForeignKey'); + $foreign_key_field = is_array($foreign_key_field) ? $foreign_key_field[ $master['ParentPrefix'] ] : $foreign_key_field; + + if ($foreign_key_field && isset($foreign_key)) { + $query .= ' AND '.$foreign_key_field.' = '.$foreign_key; } $res = $this->Conn->GetOne($query);