Index: branches/5.2.x/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -N -r15225 -r15252 --- branches/5.2.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 15225) +++ branches/5.2.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 15252) @@ -1,6 +1,6 @@ _validateAddress($event, 'Recipient'); + $this->_validateBindEvent($object); } /** @@ -646,6 +647,27 @@ } /** + * Checks that bind event is specified in correct format and exists + * + * @param kDBItem $object + */ + protected function _validateBindEvent($object) + { + $event_string = $object->GetDBField('BindToSystemEvent'); + + if ( !$event_string ) { + return; + } + + try { + $this->Application->eventImplemented(new kEvent($event_string)); + } + catch (Exception $e) { + $object->SetError('BindToSystemEvent', 'invalid_event', '+' . $e->getMessage()); + } + } + + /** * Stores ids of selected phrases and redirects to export language step 1 * * @param kEvent $event @@ -672,4 +694,23 @@ ) ); } + + /** + * Deletes all subscribers to e-mail event after it was deleted + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemDelete(kEvent $event) + { + parent::OnAfterItemDelete($event); + + $object = $event->getObject(); + /* @var $object kDBItem */ + + $sql = 'DELETE FROM ' . TABLE_PREFIX . 'EmailEventSubscribers + WHERE EmailEventId = ' . $object->GetID(); + $this->Conn->Query($sql); + } } \ No newline at end of file