Index: branches/5.1.x/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -N -r12127 -r12657 --- branches/5.1.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 12127) +++ branches/5.1.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 12657) @@ -1,6 +1,6 @@ Application->getUnitOption($event->Prefix, 'TableName'); $sql = 'UPDATE '.$table_name.' - SET Enabled = 2 + SET FrontEndOnly = 1 WHERE EventId IN ('.$ids.')'; $this->Conn->Query($sql); + + $this->clearSelectedIDs($event); } /** @@ -99,6 +103,11 @@ */ function OnSelectUser(&$event) { + if ($event->Special != 'module') { + parent::OnSelectUser($event); + return ; + } + $items_info = $this->Application->GetVar('u'); if ($items_info) { $user_id = array_shift( array_keys($items_info) ); @@ -152,21 +161,26 @@ return false; } - $enabled = $email_event->GetDBField('Enabled'); - if ($enabled == EVENT_STATUS_DISABLED) { + if ($email_event->GetDBField('Enabled') == STATUS_DISABLED) { return false; } - if ($enabled == EVENT_STATUS_FRONTEND && $this->Application->IsAdmin()) { + + if ($email_event->GetDBField('FrontEndOnly') && $this->Application->IsAdmin()) { return false; } // initial values $to_user_id = $event->getEventParam('EmailEventToUserId'); + if ( !is_numeric($to_user_id) ) { + $to_user_id = -1; // when not specified, then send to "root" + } $from_user_id = $email_event->GetDBField('FromUserId'); if ($email_event->GetDBField('Type') == EVENT_TYPE_ADMIN) { // For type "Admin" recipient is a user from field FromUserId which means From/To user in Email events list - $to_user_id = $from_user_id; + if ($to_user_id == -1) { + $to_user_id = $from_user_id; + } $from_user_id = -1; } @@ -190,7 +204,7 @@ /* @var $user UsersItem */ $email = $name = ''; - $result = $user_id > 0 ? $user->Load($user_id) : $user->Clear(); + $result = $user_id > 0 ? $user->Load( (int)$user_id ) : $user->Clear(); if ($user->IsLoaded()) { $email = $user->GetDBField('Email'); $name = trim($user->GetDBField('FirstName').' '.$user->GetDBField('LastName')); @@ -299,23 +313,11 @@ $this->Application->InitParser(); $parser_params = $this->Application->Parser->Params; // backup parser params - // ==== for TemplateParser class only: begin ==== -// $parser_pattern = $this->Application->Parser->Pattern; -// $parser_values = $this->Application->Parser->Values; -// $this->Application->Parser->Pattern = Array(); // fixes bug in TemplateParser::SortParams -// $this->Application->Parser->Values = Array(); // fixes bug in TemplateParser::SortParams - // ==== for TemplateParser class only: end ==== - $this->Application->Parser->SetParams( array_merge_recursive2($parser_params, $direct_params) ); $message = implode('&|&', explode("\n\n", $message, 2)); // preserves double \n in case when tag is located in subject field $message = $this->Application->Parser->Parse($message, 'email_template', 0); - // ==== for TemplateParser class only: begin ==== -// $this->Application->Parser->Pattern = $parser_pattern; -// $this->Application->Parser->Values = $parser_values; - // ==== for TemplateParser class only: end ==== - $this->Application->Parser->SetParams($parser_params); // restore parser params // 2. replace line endings, that are send with data submitted via request @@ -386,6 +388,11 @@ $message_subject = isset($message_headers['Subject']) ? $message_headers['Subject'] : 'Mail message'; $esender->SetSubject($message_subject); + if ($this->Application->isDebugMode()) { + // set special header with event name, so it will be easier to determite what's actually was received + $message_headers['X-Event-Name'] = $email_event_name . ' - ' . ($event->getEventParam('EmailEventType') == 1 ? 'ADMIN' : 'USER'); + } + foreach ($message_headers as $header_name => $header_value) { $esender->SetEncodedHeader($header_name, $header_value); } @@ -419,10 +426,11 @@ function _getSendLanguage($send_params) { - if (!is_array($send_params) && $this->Application->isDebugMode()) { - $this->Application->Debugger->appendTrace(); + if ($send_params && array_key_exists('language_id', $send_params)) { + return $send_params['language_id']; } - return array_key_exists('language_id', $send_params) ? $send_params['language_id'] : $this->Application->GetVar('m_lang'); + + return $this->Application->GetVar('m_lang'); } function _changeLanguage($language_id = null) @@ -511,5 +519,4 @@ echo ($emails_sent / $total_emails) * 100; } } - } -?> \ No newline at end of file + } \ No newline at end of file