Index: kernel/db/dblist.php =================================================================== --- kernel/db/dblist.php (revision 13681) +++ kernel/db/dblist.php (working copy) @@ -925,14 +925,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); + $parent_object =& $this->Application->recallObject($parent_prefix.'.'.$special, null, Array ('raise_warnings' => 0)); + /* @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)); } } Index: units/email_messages/email_messages_event_handler.php =================================================================== --- units/email_messages/email_messages_event_handler.php (revision 13681) +++ units/email_messages/email_messages_event_handler.php (working copy) @@ -65,8 +65,12 @@ $object->addFilter('module_filter', 'Module = ' . $this->Conn->qstr($module)); } - if (($event->Special == 'st') && !$this->Application->isDebugMode()) { - $object->addFilter('enabled_filter', TABLE_PREFIX . 'Events.Enabled <> ' . STATUS_DISABLED); + if ($event->Special == 'st') { + if (!$this->Application->isDebugMode()) { + $object->addFilter('enabled_filter', TABLE_PREFIX . 'Events.Enabled <> ' . STATUS_DISABLED); + } + + $object->removeFilter('parent_filter'); } } Index: units/phrases/phrases_event_handler.php =================================================================== --- units/phrases/phrases_event_handler.php (revision 13681) +++ units/phrases/phrases_event_handler.php (working copy) @@ -73,6 +73,25 @@ } /** + * Apply any custom changes to list's sql query + * + * @param kEvent $event + * @access protected + * @see OnListBuild + */ + function SetCustomQuery(&$event) + { + parent::SetCustomQuery($event); + + if ($event->Special == 'st') { + $object =& $event->getObject(); + /* @var $object kDBList */ + + $object->removeFilter('parent_filter'); + } + } + + /** * Forces new label in case if issued from get link * * @param kEvent $event