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') ); } /** * 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); } } ?>