Index: trunk/core/units/email_messages/email_messages_event_handler.php =================================================================== diff -u -N --- trunk/core/units/email_messages/email_messages_event_handler.php (revision 7391) +++ trunk/core/units/email_messages/email_messages_event_handler.php (revision 0) @@ -1,156 +0,0 @@ -getEmailEventId(); - $object =& $event->getObject(); - - $parent_info = $object->getLinkedInfo(); - - $sql = 'SELECT '.$object->IDField.' FROM '.$object->TableName.' WHERE ('.$parent_info['ForeignKey'].' = '.$parent_info['ParentId'].') AND (EventId = '.$email_event_id.')'; - - $id = (int)$this->Conn->GetOne($sql); - if(!$id) - { - $object->SetDBField('EventId', $email_event_id); - $object->SetDBField('Headers', $this->Application->ConfigValue('Smtp_DefaultHeaders') ); - } - return $id; - } - - function getEmailEventId() - { - return parent::getPassedID( new kEvent('emailevents:OnDummy') ); - } - - /** - * Apply any custom changes to list's sql query - * - * @param kEvent $event - * @access protected - * @see OnListBuild - */ - function SetCustomQuery(&$event) - { - if ($event->Special == 'module') { - $object =& $event->getObject(); - $module = $this->Application->GetVar('module'); - $object->addFilter('module_filter', 'Module = '.$this->Conn->qstr($module)); - } - } - - /** - * If loading empty item, then set parent id - * - * @param kEvent $event - */ - function OnBeforeItemLoad(&$event) - { - if( !$event->getEventParam('id') ) - { - $this->OnNew($event); - $event->status = erFATAL; - } - } - - /** - * Parse message template (split into header, subject & body) - * - * @param kEvent $event - */ - 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); - } - - /** - * Merge body+subject+headers into message template - * - * @param kEvent $event - */ - function OnBeforeItemUpdate(&$event) - { - $this->parseVirtualFields($event); - } - - /** - * Merge body+subject+headers into message template - * - * @param kEvent $event - */ - function OnBeforeItemCreate(&$event) - { - $this->parseVirtualFields($event); - } - - /** - * Merge body+subject+headers into message template - * - * @param kEvent $event - */ - function parseVirtualFields(&$event) - { - $object =& $event->getObject(); - if( $object->GetDBField('Headers') || $object->GetDBField('Subject') || $object->GetDBField('Body') ) - { - $ret = $object->GetDBField('Headers'); - if($ret) $ret .= "\n"; - - $ret = $this->removeTrailingCRLF($ret); - $ret .= 'Subject: '.$object->GetDBField('Subject')."\n\n"; - $ret .= $object->GetDBField('Body'); - $object->SetDBField('Template', $ret); - } - } - - /** - * Remove trailing CR/LF chars from string - * - * @param string $string - * @return string - */ - function removeTrailingCRLF($string) - { - return preg_replace('/(\n|\r)+/',"\\1",$string); - } - } - -?> \ No newline at end of file