Index: branches/RC/core/kernel/db/db_event_handler.php =================================================================== diff -u -N -r11742 -r11743 --- branches/RC/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 11742) +++ branches/RC/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 11743) @@ -531,7 +531,10 @@ */ function UseTempTables(&$event) { - return $this->Application->IsTempMode($event->Prefix, $event->Special); + $top_prefix = $this->Application->GetTopmostPrefix($event->Prefix); // passed parent, not always actual + $special = ($top_prefix == $event->Prefix) ? $event->Special : $this->getMainSpecial($event); + + return $this->Application->IsTempMode($event->Prefix, $special); } /** @@ -613,12 +616,21 @@ */ function getMainSpecial(&$event) { - $special = $event->getEventParam('main_special'); - if($special === false || $special == '$main_special') - { - $special = $event->Special; + $main_special = $event->getEventParam('main_special'); + + if ($main_special === false) { + // main item's special not passed + + if (substr($event->Special, -5) == '-item') { + // temp handler added "-item" to given special -> process that here + return substr($event->Special, 0, -5); + } + + // by default subitem's special is used for main item searching + return $event->Special; } - return $special; + + return $main_special; } /**