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