Index: units/links/links_event_handler.php =================================================================== --- units/links/links_event_handler.php (revision 14888) +++ units/links/links_event_handler.php (working copy) @@ -525,4 +525,58 @@ $this->Application->setUnitOption($event->MasterEvent->Prefix, 'Clones', $clones); } } + + /** + * Occures before original item of item in pending editing got deleted (for hooking only) + * + * @param kEvent $event + */ + public function OnBeforeDeleteOriginal(&$event) + { + parent::OnBeforeDeleteOriginal($event); + + $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + + $sql = 'SELECT ResourceId FROM '.$table_name.' WHERE '.$id_field.'='.$event->getEventParam('original_id'); + $original_resource_id = $this->Conn->GetOne($sql); + + $this->Application->SetVar('original_resource_id', $original_resource_id); + } + + /** + * Changes item resource id in one field + * + * @param string $table_name + * @param string $resource_id_field + * @param string $original_link_resource_id + * @param string $new_link_resource_id + */ + private function changeResourceId($table_name, $resource_id_field, $original_link_resource_id, $new_link_resource_id) + { + $sql = 'UPDATE '.TABLE_PREFIX.$table_name.' SET + '.$resource_id_field.' = '.$new_link_resource_id.' + WHERE '.$resource_id_field.' = '.$original_link_resource_id; + $this->Conn->Query($sql); + } + + + /** + * Occures before original item of item in pending editing got deleted (for hooking only) + * + * @param kEvent $event + */ + public function OnAfterDeleteOriginal(&$event) + { + parent::OnAfterDeleteOriginal($event); + + $original_link_resource_id = $this->Application->GetVar('original_resource_id'); + $new_link_resource_id = $event->getEventParam('new_resource_id'); + + $this->changeResourceId('Listings', 'ItemResourceId', $original_link_resource_id, $new_link_resource_id); + $this->changeResourceId('Relationship', 'SourceId', $original_link_resource_id, $new_link_resource_id); + $this->changeResourceId('Relationship', 'TargetId', $original_link_resource_id, $new_link_resource_id); + } + + } \ No newline at end of file