Index: branches/5.1.x/core/units/email_messages/email_messages_event_handler.php =================================================================== diff -u -N -r12127 -r12657 --- branches/5.1.x/core/units/email_messages/email_messages_event_handler.php (.../email_messages_event_handler.php) (revision 12127) +++ branches/5.1.x/core/units/email_messages/email_messages_event_handler.php (.../email_messages_event_handler.php) (revision 12657) @@ -1,6 +1,6 @@ addFilter('module_filter', 'Module = ' . $this->Conn->qstr($module)); } - if ($event->Special == 'st') { + if (($event->Special == 'st') && !$this->Application->isDebugMode()) { $object->addFilter('enabled_filter', TABLE_PREFIX . 'Events.Enabled <> ' . STATUS_DISABLED); } } @@ -106,33 +108,14 @@ function OnAfterItemLoad(&$event) { $object =& $event->getObject(); - - $lines = explode("\n", $object->GetDBField('Template') ); - - $headers = Array(); - - foreach($lines as $line) - { - if( strlen(trim($line)) == 0 || ($line == '.') ) break; - - $parts = explode(':', $line, 2); - if(strtolower($parts[0]) == 'subject') - { - $object->SetDBField('Subject', trim($parts[1]) ); - } - else - { - $headers[] = $line; - } - } - $object->SetDBField('Headers', implode("\n", $headers) ); - - $message_body = ''; - while( (list($line_id,$line) = each($lines)) ) - { - $message_body .= $line; - } - $object->SetDBField('Body', $message_body); + /* @var $object kDBItem */ + + $email_message_helper =& $this->Application->recallObject('EmailMessageHelper'); + /* @var $email_message_helper EmailMessageHelper */ + + $fields_hash = $email_message_helper->parseTemplate( $object->GetDBField('Template') ); + + $object->SetDBFieldsFromHash($fields_hash); } /** @@ -156,6 +139,30 @@ } /** + * Enabled/disables actual email event + * + * @param kEvent $event + */ + function OnAfterItemUpdate(&$event) + { + parent::OnAfterItemUpdate($event); + + $object =& $event->getObject(); + /* @var $object kDBItem */ + + if ($object->GetDBField('Enabled') != $object->GetOriginalField('Enabled')) { + $email_event =& $this->Application->recallObject('emailevents.-item', null, Array ('skip_autoload' => true)); + /* @var $email_event kDBItem */ + + $email_event->Load( $object->GetDBField('EventId') ); + if ($email_event->isLoaded()) { + $email_event->SetDBField('Enabled', $object->GetDBField('Enabled')); + $email_event->Update(); + } + } + } + + /** * Merge body+subject+headers into message template * * @param kEvent $event @@ -402,6 +409,4 @@ return Array ($email_address, $name); } - } - -?> \ No newline at end of file + } \ No newline at end of file