Index: kernel/db/dblist.php
===================================================================
--- kernel/db/dblist.php (revision 13756)
+++ kernel/db/dblist.php (working copy)
@@ -933,14 +933,22 @@
$foreign_key_field = $this->Application->getUnitOption($this->Prefix, 'ForeignKey');
if (is_array($foreign_key_field)) $foreign_key_field = getArrayValue($foreign_key_field, $parent_prefix);
- if (!$parent_table_key || !$foreign_key_field) return ;
+ if (!$parent_table_key || !$foreign_key_field) {
+ return ;
+ }
$parent_object =& $this->Application->recallObject($parent_prefix.'.'.$special);
- $parent_id = $parent_object->GetDBField($parent_table_key);
+ /* @var $parent_object kDBItem */
- if (!$parent_id) return ;
+ if (!$parent_object->isLoaded()) {
+ $this->addFilter('parent_filter', 'FALSE');
+ trigger_error('Parent ID not found (prefix: "' . rtrim($parent_prefix.'.'.$special, '.') . '"; sub-prefix: "' . $this->getPrefixSpecial() . '")', E_USER_NOTICE);
+ return ;
+ }
- $this->addFilter('parent_filter', '`'.$this->TableName.'`.`'.$foreign_key_field.'` = '.$parent_id); // only for list in this case
+ // only for list in this case
+ $parent_id = $parent_object->GetDBField($parent_table_key);
+ $this->addFilter('parent_filter', '`' . $this->TableName . '`.`' . $foreign_key_field . '` = ' . $this->Conn->qstr($parent_id));
}
}