Index: branches/5.2.x/core/units/email_events/email_events_event_handler.php
===================================================================
diff -u -N -r15222 -r15225
--- branches/5.2.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 15222)
+++ branches/5.2.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 15225)
@@ -1,6 +1,6 @@
getObject();
/* @var $object kDBItem */
- // validate email subject and body for parsing errors
- $this->_validateEmailTemplate($object);
-
- // validate sender and recipient addresses
- if ( $object->GetDBField('CustomSender') ) {
- $this->_validateAddress($event, 'Sender');
- }
- $this->_validateAddress($event, 'Recipient');
-
if ( !$this->Application->isDebugMode(false) ) {
// only allow to enable/disable event while in debug mode
$to_restore = Array ('Enabled', 'AllowChangingSender', 'AllowChangingRecipient');
@@ -475,53 +466,6 @@
}
/**
- * Validates address using given field prefix
- *
- * @param kEvent $event
- * @param string $field_prefix
- */
- function _validateAddress($event, $field_prefix)
- {
- $object = $event->getObject();
- /* @var $object kDBItem */
-
- $address_type = $object->GetDBField($field_prefix . 'AddressType');
- $object->setRequired($field_prefix . 'Address', $address_type > 0);
- $address = $object->GetDBField($field_prefix . 'Address');
-
- if ( !$address ) {
- // don't validate against empty address
- return;
- }
-
- switch ($address_type) {
- case EmailEvent::ADDRESS_TYPE_EMAIL:
- if ( !preg_match('/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i', $address) ) {
- $object->SetError($field_prefix . 'Address', 'invalid_email');
- }
- break;
-
- case EmailEvent::ADDRESS_TYPE_USER:
- $sql = 'SELECT PortalUserId
- FROM ' . TABLE_PREFIX . 'Users
- WHERE Username = ' . $this->Conn->qstr($address);
- if ( !$this->Conn->GetOne($sql) ) {
- $object->SetError($field_prefix . 'Address', 'invalid_user');
- }
- break;
-
- case EmailEvent::ADDRESS_TYPE_GROUP:
- $sql = 'SELECT GroupId
- FROM ' . TABLE_PREFIX . 'UserGroups
- WHERE Name = ' . $this->Conn->qstr($address);
- if ( !$this->Conn->GetOne($sql) ) {
- $object->SetError($field_prefix . 'Address', 'invalid_group');
- }
- break;
- }
- }
-
- /**
* Don't allow to enable/disable events in non-debug mode
*
* @param kEvent $event
@@ -611,6 +555,31 @@
}
/**
+ * Does custom validation
+ *
+ * @param kEvent $event
+ * @return void
+ * @access protected
+ */
+ protected function OnBeforeItemValidate(kEvent $event)
+ {
+ parent::OnBeforeItemValidate($event);
+
+ $object = $event->getObject();
+ /* @var $object kDBItem */
+
+ // validate email subject and body for parsing errors
+ $this->_validateEmailTemplate($object);
+
+ // validate sender and recipient addresses
+ if ( $object->GetDBField('CustomSender') ) {
+ $this->_validateAddress($event, 'Sender');
+ }
+
+ $this->_validateAddress($event, 'Recipient');
+ }
+
+ /**
* Validates subject and body fields of Email template
*
* @param kDBItem $object
@@ -619,31 +588,60 @@
*/
protected function _validateEmailTemplate($object)
{
- $this->parseField($object, 'Subject');
- $this->parseField($object, 'HtmlBody');
- $this->parseField($object, 'PlainTextBody');
+ $email_message_helper = $this->Application->recallObject('kEmailMessageHelper');
+ /* @var $email_message_helper kEmailMessageHelper */
+
+ $email_message_helper->parseField($object, 'Subject');
+ $email_message_helper->parseField($object, 'HtmlBody');
+ $email_message_helper->parseField($object, 'PlainTextBody');
}
/**
- * Parses contents of given object field and sets error, when invalid in-portal tags found
- * @param kDBItem $object
- * @param string $field
+ * Validates address using given field prefix
+ *
+ * @param kEvent $event
+ * @param string $field_prefix
* @return void
* @access protected
*/
- protected function parseField($object, $field)
+ protected function _validateAddress($event, $field_prefix)
{
- $this->Application->InitParser();
+ $object = $event->getObject();
+ /* @var $object kDBItem */
- try {
- $this->Application->Parser->CompileRaw($object->GetField($field), 'email_template');
+ $address_type = $object->GetDBField($field_prefix . 'AddressType');
+ $object->setRequired($field_prefix . 'Address', $address_type > 0);
+ $address = $object->GetDBField($field_prefix . 'Address');
+
+ if ( !$address ) {
+ // don't validate against empty address
+ return;
}
- catch (ParserException $e) {
- if ( $this->Application->isDebugMode() ) {
- $this->Application->Debugger->appendHTML('Error in Email Template: ' . $e->getMessage() . ' (line: ' . $e->getLine() . ')');
- }
- $object->SetError($field, 'parsing_error');
+ switch ($address_type) {
+ case EmailEvent::ADDRESS_TYPE_EMAIL:
+ if ( !preg_match('/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i', $address) ) {
+ $object->SetError($field_prefix . 'Address', 'invalid_email');
+ }
+ break;
+
+ case EmailEvent::ADDRESS_TYPE_USER:
+ $sql = 'SELECT PortalUserId
+ FROM ' . TABLE_PREFIX . 'Users
+ WHERE Username = ' . $this->Conn->qstr($address);
+ if ( !$this->Conn->GetOne($sql) ) {
+ $object->SetError($field_prefix . 'Address', 'invalid_user');
+ }
+ break;
+
+ case EmailEvent::ADDRESS_TYPE_GROUP:
+ $sql = 'SELECT GroupId
+ FROM ' . TABLE_PREFIX . 'UserGroups
+ WHERE Name = ' . $this->Conn->qstr($address);
+ if ( !$this->Conn->GetOne($sql) ) {
+ $object->SetError($field_prefix . 'Address', 'invalid_group');
+ }
+ break;
}
}
Index: branches/5.2.x/core/kernel/utility/email.php
===================================================================
diff -u -N -r15222 -r15225
--- branches/5.2.x/core/kernel/utility/email.php (.../email.php) (revision 15222)
+++ branches/5.2.x/core/kernel/utility/email.php (.../email.php) (revision 15225)
@@ -1,6 +1,6 @@
params;
- $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'overwrite_to_email', 'language_id');
+ $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'overwrite_to_email', 'language_id', 'use_custom_design');
foreach ($send_keys as $send_key) {
unset($ret[$send_key]);
@@ -691,21 +691,16 @@
$design_key = $is_html ? 'html' : 'text';
if ( !isset($design_templates[$design_key]) ) {
- $footer_email = $this->Application->recallObject('emailevents.footer', null, Array ('skip_autoload' => true));
- /* @var $footer_email kDBItem */
+ $language = $this->Application->recallObject('lang.current');
+ /* @var $language LanguagesItem */
- $footer_email->Load('COMMON.FOOTER', 'Event');
- $footer = $footer_email->GetField($is_html ? 'HtmlBody' : 'PlainTextBody');
+ $design_template = $language->GetDBField($is_html ? 'HtmlEmailTemplate' : 'TextEmailTemplate');
- if ( !$is_html && !$footer ) {
- $footer = $this->sender->ConvertToText($footer_email->GetField('HtmlBody'));
+ if ( !$is_html && !$design_template ) {
+ $design_template = $this->sender->ConvertToText($language->GetDBField('HtmlEmailTemplate'));
}
- $design_templates[$design_key] = '$body';
-
- if ( $footer ) {
- $design_templates[$design_key] .= "\r\n" . $footer;
- }
+ $design_templates[$design_key] = $design_template;
}
return $this->_parseText(str_replace('$body', $text, $design_templates[$design_key]));
@@ -731,7 +726,12 @@
return false;
}
- $message_body = $this->_applyMessageDesign($message_body, $is_html);
+ if ( isset($this->params['use_custom_design']) && $this->params['use_custom_design'] ) {
+ $message_body = $this->_parseText($message_body);
+ }
+ else {
+ $message_body = $this->_applyMessageDesign($message_body, $is_html);
+ }
return trim($message_body) ? $message_body : false;
}
Index: branches/5.2.x/core/units/languages/languages_config.php
===================================================================
diff -u -N -r15012 -r15225
--- branches/5.2.x/core/units/languages/languages_config.php (.../languages_config.php) (revision 15012)
+++ branches/5.2.x/core/units/languages/languages_config.php (.../languages_config.php) (revision 15225)
@@ -1,6 +1,6 @@
'kOptionsFormatter', 'options' => Array (1 => 'la_opt_SynchronizeToOthers', 2 => 'la_opt_SynchronizeFromOthers'), 'use_phrases' => 1, 'multiple' => 1,
'not_null' => 1, 'default' => ''
),
+ 'HtmlEmailTemplate' => Array (
+ 'type' => 'string',
+ 'error_msgs' => Array ('parsing_error' => '!la_error_ParsingError!', 'body_missing' => '!la_error_EmailTemplateBodyMissing!'),
+ 'default' => NULL
+ ),
+ 'TextEmailTemplate' => Array (
+ 'type' => 'string',
+ 'error_msgs' => Array ('parsing_error' => '!la_error_ParsingError!', 'body_missing' => '!la_error_EmailTemplateBodyMissing!'),
+ 'default' => NULL
+ ),
),
'VirtualFields' => Array (
Index: branches/5.2.x/core/install/upgrades.php
===================================================================
diff -u -N -r15222 -r15225
--- branches/5.2.x/core/install/upgrades.php (.../upgrades.php) (revision 15222)
+++ branches/5.2.x/core/install/upgrades.php (.../upgrades.php) (revision 15225)
@@ -1,6 +1,6 @@
getLanguages();
if ($this->Conn->TableFound(TABLE_PREFIX . 'EmailMessage', true)) {
- $email_message_helper = $this->Application->recallObject('EmailMessageHelper');
- /* @var $email_message_helper EmailMessageHelper */
+ $email_message_helper = $this->Application->recallObject('kEmailMessageHelper');
+ /* @var $email_message_helper kEmailMessageHelper */
foreach ($languages as $language_id) {
$sql = 'SELECT EmailMessageId, Template, EventId
@@ -2034,51 +2034,116 @@
}
if ( $mode == 'after' ) {
- $id_field = $this->Application->getUnitOption('emailevents', 'IDField');
- $table_name = $this->Application->getUnitOption('emailevents', 'TableName');
- $fields = $this->Conn->Query('DESCRIBE ' . $table_name, 'Field');
+ $this->_splitEmailBody();
+ $this->_migrateCommonFooter();
+ }
+ }
- if ( !isset($fields['l1_Body']) ) {
- // column dropped - nothing to convert anymore
- return;
- }
+ /**
+ * Splits e-mail body into HTML and Text fields
+ *
+ * @return void
+ * @access private
+ */
+ private function _splitEmailBody()
+ {
+ $id_field = $this->Application->getUnitOption('emailevents', 'IDField');
+ $table_name = $this->Application->getUnitOption('emailevents', 'TableName');
+ $fields = $this->Conn->Query('DESCRIBE ' . $table_name, 'Field');
- $ml_helper = $this->Application->recallObject('kMultiLanguageHelper');
- /* @var $ml_helper kMultiLanguageHelper */
+ if ( !isset($fields['l1_Body']) ) {
+ // column dropped - nothing to convert anymore
+ return;
+ }
- $languages = $ml_helper->getLanguages();
- $ml_helper->createFields('emailevents');
+ $ml_helper = $this->Application->recallObject('kMultiLanguageHelper');
+ /* @var $ml_helper kMultiLanguageHelper */
- $sql = 'SELECT *
- FROM ' . $table_name;
- $email_events = $this->Conn->Query($sql);
+ $languages = $ml_helper->getLanguages();
+ $ml_helper->createFields('emailevents');
- // 1. move data to new columns
- foreach ($email_events as $email_event) {
- $fields_hash = Array ();
- $translation_field = $email_event['MessageType'] == 'html' ? 'HtmlBody' : 'PlainTextBody';
+ $sql = 'SELECT *
+ FROM ' . $table_name;
+ $email_events = $this->Conn->Query($sql);
- foreach ($languages as $language_id) {
- $fields_hash['l' . $language_id . '_' . $translation_field] = $email_event['l' . $language_id . '_Body'];
- }
+ // 1. move data to new columns
+ foreach ($email_events as $email_event) {
+ $fields_hash = Array ();
+ $translation_field = $email_event['MessageType'] == 'html' ? 'HtmlBody' : 'PlainTextBody';
- if ( $fields_hash ) {
- $this->Conn->doUpdate($fields_hash, $table_name, $id_field . ' = ' . $email_event[$id_field]);
- }
+ foreach ($languages as $language_id) {
+ $fields_hash['l' . $language_id . '_' . $translation_field] = $email_event['l' . $language_id . '_Body'];
}
- // 2. drop old columns
- $drops = Array ('DROP COLUMN MessageType');
+ if ( $fields_hash ) {
+ $this->Conn->doUpdate($fields_hash, $table_name, $id_field . ' = ' . $email_event[$id_field]);
+ }
+ }
- foreach ($languages as $language_id) {
- $lang_field = 'l' . $language_id . '_Body';
+ // 2. drop old columns
+ $drops = Array ('DROP COLUMN MessageType');
- if ( isset($fields[$lang_field]) ) {
- $drops[] = 'DROP COLUMN ' . $lang_field;
- }
+ foreach ($languages as $language_id) {
+ $lang_field = 'l' . $language_id . '_Body';
+
+ if ( isset($fields[$lang_field]) ) {
+ $drops[] = 'DROP COLUMN ' . $lang_field;
}
+ }
- $this->Conn->Query('ALTER TABLE ' . $table_name . ' ' . implode(', ', $drops));
+ $this->Conn->Query('ALTER TABLE ' . $table_name . ' ' . implode(', ', $drops));
+ }
+
+ /**
+ * Transforms COMMON.FOOTER e-mail event into new field in Languages table
+ */
+ private function _migrateCommonFooter()
+ {
+ $ml_helper = $this->Application->recallObject('kMultiLanguageHelper');
+ /* @var $ml_helper kMultiLanguageHelper */
+
+ $languages = $ml_helper->getLanguages();
+
+ $event_table = $this->Application->getUnitOption('emailevents', 'TableName');
+
+ $sql = 'SELECT *
+ FROM ' . $event_table . '
+ WHERE Event = "COMMON.FOOTER"';
+ $footer_data = $this->Conn->GetRow($sql);
+
+ if ( !$footer_data ) {
+ return;
}
+
+ $table_name = $this->Application->getUnitOption('lang', 'TableName');
+
+ foreach ($languages as $language_id) {
+ $fields_hash = Array (
+ 'HtmlEmailTemplate' => $this->_appendEmailDesignBody($footer_data['l' . $language_id . '_HtmlBody']),
+ 'TextEmailTemplate' => $this->_appendEmailDesignBody($footer_data['l' . $language_id . '_PlainTextBody']),
+ );
+
+ $this->Conn->doUpdate($fields_hash, $table_name, 'LanguageId = ' . $language_id);
+ }
+
+ $sql = 'DELETE FROM ' . $event_table . '
+ WHERE EventId = ' . $footer_data['EventId'];
+ $this->Conn->Query($sql);
}
+
+ /**
+ * Adds "$body" to given string
+ *
+ * @param string $string
+ * @return string
+ * @access private
+ */
+ private function _appendEmailDesignBody($string)
+ {
+ if ( !$string ) {
+ return $string;
+ }
+
+ return '$body' . "\n" . str_replace(Array ("\r\n", "\r"), "\n", $string);
+ }
}
\ No newline at end of file
Index: branches/5.2.x/core/units/helpers/language_import_helper.php
===================================================================
diff -u -N -r15224 -r15225
--- branches/5.2.x/core/units/helpers/language_import_helper.php (.../language_import_helper.php) (revision 15224)
+++ branches/5.2.x/core/units/helpers/language_import_helper.php (.../language_import_helper.php) (revision 15225)
@@ -1,6 +1,6 @@
';
- $ret .= $this->_exportEncoding == 'base64' ? base64_encode($replacements) : '';
- $ret .= '' . "\n";
+ if ( $replacements ) {
+ $ret .= "\t\t" . '' . $this->_exportConvert($replacements) . '' . "\n";
}
+ // e-mail design templates
+ if ( $language_info['HtmlEmailTemplate'] || $language_info['TextEmailTemplate'] ) {
+ $ret .= "\t\t" . '' . "\n";
+
+ if ( $language_info['HtmlEmailTemplate'] ) {
+ $ret .= "\t\t\t" . '' . $this->_exportConvert($language_info['HtmlEmailTemplate']) . '' . "\n";
+ }
+
+ if ( $language_info['TextEmailTemplate'] ) {
+ $ret .= "\t\t\t" . '' . $this->_exportConvert($language_info['TextEmailTemplate']) . '' . "\n";
+ }
+
+ $ret .= "\t\t" . '' . "\n";
+ }
+
// phrases
if ($phrases) {
$ret .= "\t\t" . '' . "\n";
@@ -344,12 +361,10 @@
}
if ( $this->_exportEncoding == 'base64' ) {
- $data = base64_encode($translation);
$hint_translation = base64_encode($hint_translation);
$column_translation = base64_encode($column_translation);
}
else {
- $data = '';
$hint_translation = htmlspecialchars($hint_translation);
$column_translation = htmlspecialchars($column_translation);
}
@@ -368,7 +383,7 @@
$attributes[] = 'Column="' . $column_translation . '"';
}
- $ret .= "\t\t\t" . '' . $data . '' . "\n";
+ $ret .= "\t\t\t" . '' . $this->_exportConvert($translation) . '' . "\n";
}
$ret .= "\t\t" . '' . "\n";
@@ -774,6 +789,7 @@
'Encoding' => (string)$language_node['Encoding'],
'Charset' => 'utf-8',
'SynchronizationModes' => Language::SYNCHRONIZE_DEFAULT,
+ 'HtmlEmailTemplate' => '$body',
);
if ( $version > 1 ) {
@@ -823,6 +839,12 @@
$fields_hash['FilenameReplacements'] = $replacements;
break;
+ case 'EMAILDESIGNS':
+ // added since v6
+ $this->_decodeEmailDesignTemplate($fields_hash, 'HtmlEmailTemplate', (string)$sub_node->HTML);
+ $this->_decodeEmailDesignTemplate($fields_hash, 'TextEmailTemplate', (string)$sub_node->TEXT);
+ break;
+
default:
if ( $version == 1 ) {
$fields_hash[$field_mapping[$sub_node->Name]] = (string)$sub_node;
@@ -834,6 +856,24 @@
}
/**
+ * Decodes e-mail template design from language pack
+ *
+ * @param Array $fields_hash
+ * @param string $field
+ * @param string $design_template
+ */
+ protected function _decodeEmailDesignTemplate(&$fields_hash, $field, $design_template)
+ {
+ if ( $fields_hash['Encoding'] != 'plain' ) {
+ $design_template = base64_decode($design_template);
+ }
+
+ if ( $design_template ) {
+ $fields_hash[$field] = $design_template;
+ }
+ }
+
+ /**
* Performs phases import
*
* @param SimpleXMLElement $phrases
@@ -913,8 +953,8 @@
$this->Application->Debugger->profileStart('L[' . $language_id . ']E', 'Language: ' . $language_id . '; Events Import');
}
- $email_message_helper = $this->Application->recallObject('EmailMessageHelper');
- /* @var $email_message_helper EmailMessageHelper */
+ $email_message_helper = $this->Application->recallObject('kEmailMessageHelper');
+ /* @var $email_message_helper kEmailMessageHelper */
foreach ($events as $event_node) {
/* @var $event_node SimpleXMLElement */
Index: branches/5.2.x/core/install/install_schema.sql
===================================================================
diff -u -N -r15223 -r15225
--- branches/5.2.x/core/install/install_schema.sql (.../install_schema.sql) (revision 15223)
+++ branches/5.2.x/core/install/install_schema.sql (.../install_schema.sql) (revision 15225)
@@ -165,6 +165,8 @@
Locale varchar(10) NOT NULL DEFAULT 'en-US',
UserDocsUrl varchar(255) NOT NULL DEFAULT '',
SynchronizationModes varchar(255) NOT NULL DEFAULT '',
+ HtmlEmailTemplate text,
+ TextEmailTemplate text,
PRIMARY KEY (LanguageId),
KEY Enabled (Enabled),
KEY PrimaryLang (PrimaryLang),
Index: branches/5.2.x/core/units/languages/languages_event_handler.php
===================================================================
diff -u -N -r15222 -r15225
--- branches/5.2.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 15222)
+++ branches/5.2.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 15225)
@@ -1,6 +1,6 @@
_itemChanged($event);
+ }
+
+ /**
* Occurs before updating item
*
* @param kEvent $event
@@ -230,9 +244,68 @@
if ( $object->GetDBField('PrimaryLang') == 1 && $object->GetDBField($status_field) == 0 ) {
$object->SetDBField($status_field, 1);
}
+
+ $this->_itemChanged($event);
}
+
/**
+ * Dynamically changes required fields
+ *
+ * @param kEvent $event
+ * @return void
+ * @access protected
+ */
+ protected function _itemChanged(kEvent $event)
+ {
+ $this->setRequired($event);
+ }
+
+ /**
+ * Dynamically changes required fields
+ *
+ * @param kEvent $event
+ * @return void
+ * @access protected
+ */
+ protected function OnBeforeItemValidate(kEvent $event)
+ {
+ parent::OnBeforeItemValidate($event);
+
+ $object = $event->getObject();
+ /* @var $object kDBItem */
+
+ $email_message_helper = $this->Application->recallObject('kEmailMessageHelper');
+ /* @var $email_message_helper kEmailMessageHelper */
+
+ $email_message_helper->parseField($object, 'HtmlEmailTemplate');
+ $email_message_helper->parseField($object, 'TextEmailTemplate');
+
+ $check_field = $object->GetDBField('TextEmailTemplate') ? 'TextEmailTemplate' : 'HtmlEmailTemplate';
+ $check_value = $object->GetDBField($check_field);
+
+ if ( $check_value && strpos($check_value, '$body') === false ) {
+ $object->SetError($check_field, 'body_missing');
+ }
+ }
+
+ /**
+ * Dynamically changes required fields
+ *
+ * @param kEvent $event
+ * @return void
+ * @access protected
+ */
+ protected function setRequired(kEvent $event)
+ {
+ $object = $event->getObject();
+ /* @var $object kDBItem */
+
+ $object->setRequired('HtmlEmailTemplate', !$object->GetDBField('TextEmailTemplate'));
+ $object->setRequired('TextEmailTemplate', !$object->GetDBField('HtmlEmailTemplate'));
+ }
+
+ /**
* Shows only enabled languages on front
*
* @param kEvent $event
@@ -376,9 +449,28 @@
$object->SetDBField('CopyFromLanguage', $primary_lang_id);
$object->SetDBField('SynchronizationModes', Language::SYNCHRONIZE_DEFAULT);
+ $object->SetDBField('HtmlEmailTemplate', '$body');
+
+ $this->setRequired($event);
}
/**
+ * Sets dynamic required fields
+ *
+ * @param kEvent $event
+ * @return void
+ * @access protected
+ */
+ protected function OnAfterItemLoad(kEvent $event)
+ {
+ parent::OnAfterItemLoad($event);
+
+ $object = $event->getObject();
+ /* @var $object kDBItem */
+
+ $this->setRequired($event);
+ }
+ /**
* Sets new language mark
*
* @param kEvent $event
Index: branches/5.2.x/core/install/upgrades.sql
===================================================================
diff -u -N -r15215 -r15225
--- branches/5.2.x/core/install/upgrades.sql (.../upgrades.sql) (revision 15215)
+++ branches/5.2.x/core/install/upgrades.sql (.../upgrades.sql) (revision 15225)
@@ -2660,3 +2660,6 @@
CHANGE CategoryId CategoryId INT(11) NULL;
# ===== v 5.2.0-B3 =====
+ALTER TABLE Languages
+ ADD HtmlEmailTemplate TEXT NULL,
+ ADD TextEmailTemplate TEXT NULL;
Index: branches/5.2.x/core/admin_templates/regional/languages_edit.tpl
===================================================================
diff -u -N -r14629 -r15225
--- branches/5.2.x/core/admin_templates/regional/languages_edit.tpl (.../languages_edit.tpl) (revision 14629)
+++ branches/5.2.x/core/admin_templates/regional/languages_edit.tpl (.../languages_edit.tpl) (revision 15225)
@@ -107,6 +107,10 @@
+
+
+
+
Index: branches/5.2.x/core/units/helpers/email_message_helper.php
===================================================================
diff -u -N -r15222 -r15225
--- branches/5.2.x/core/units/helpers/email_message_helper.php (.../email_message_helper.php) (revision 15222)
+++ branches/5.2.x/core/units/helpers/email_message_helper.php (.../email_message_helper.php) (revision 15225)
@@ -1,6 +1,6 @@
Application->InitParser();
- $ret = array_key_exists('Headers', $fields_hash) ? $fields_hash['Headers'] : '';
- if ($ret) {
- $ret .= "\n";
+ try {
+ $this->Application->Parser->CompileRaw($object->GetField($field), 'email_template');
}
+ catch (ParserException $e) {
+ if ( $this->Application->isDebugMode() ) {
+ $this->Application->Debugger->appendHTML('Error in Email Template: ' . $e->getMessage() . ' (line: ' . $e->getLine() . ')');
+ }
- $ret = $this->_removeTrailingCRLF($ret);
- $ret .= 'Subject: ' . $fields_hash['Subject'] . "\n\n";
- $ret .= $fields_hash['Body'];
-
- return $ret;
+ $object->SetError($field, 'parsing_error');
+ }
}
-
- /**
- * 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
Index: branches/5.2.x/core/install/english.lang
===================================================================
diff -u -N -r15222 -r15225
--- branches/5.2.x/core/install/english.lang (.../english.lang) (revision 15222)
+++ branches/5.2.x/core/install/english.lang (.../english.lang) (revision 15225)
@@ -1,5 +1,8 @@
-
+
+
+ JGJvZHkNCjxici8+PGJyLz4NCg0KU2luY2VyZWx5LDxici8+PGJyLz4NCg0KV2Vic2l0ZSBhZG1pbmlzdHJhdGlvbi4=
+
QWN0aXZl
QWRk
@@ -253,6 +256,7 @@
Q29ubmVjdGlvbiBGYWlsZWQ=
RXJyb3IgY29weWluZyBzdWJzZWN0aW9ucw==
Q3VzdG9tIGZpZWxkIHdpdGggaWRlbnRpY2FsIG5hbWUgYWxyZWFkeSBleGlzdHM=
+ RW1haWwgRGVzaWduIFRlbXBsYXRlIHNob3VsZCBjb250YWluIGF0IGxlYXN0ICIkYm9keSIgdGFnIGluIGl0Lg==
RmlsZSBpcyB0b28gbGFyZ2U=
Z3JvdXAgbm90IGZvdW5k
RmllbGQgZG9lc24ndCBleGlzdCBpbiAiJXMiIHVuaXQgY29uZmln
@@ -448,6 +452,7 @@
SGludCBQaHJhc2U=
SGl0cw==
SG90
+ SFRNTCBWZXJzaW9u
SFRNTCBWZXJzaW9u
SWNvbiBVUkwgKGRpc2FibGVkKQ==
SWNvbiBVUkw=
@@ -630,6 +635,7 @@
VGV4dA==
VGV4dCBBbGlnbg==
VGV4dCBEZWNvcmF0aW9u
+ VGV4dCBWZXJzaW9u
VGV4dCBWZXJzaW9u
VGhlbWU=
VGhlbWVz
@@ -1031,6 +1037,7 @@
Q291bnRlcnM=
Q3VzdG9tIEZpZWxkcw==
U3VibWlzc2lvbiBEYXRh
+ RS1tYWlsIERlc2lnbiBUZW1wbGF0ZXM=
RnJvbnQtZW5k
RnVsbCBTaXplIEltYWdl
R2VuZXJhbA==
@@ -1609,10 +1616,6 @@
WW91ciBDYXRlZ29yeSAiPGlucDI6Y19GaWVsZCBuYW1lPSJOYW1lIi8+IiBoYXMgYmVlbiBEZW5pZWQ=
WW91ciBjYXRlZ29yeSBzdWdnZXN0aW9uICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIGhhcyBiZWVuIGRlbmllZC4=
-
- Q29tbW9uIEZvb3RlciBUZW1wbGF0ZQ==
- PGJyLz48YnIvPg0KDQpTaW5jZXJlbHksPGJyLz48YnIvPg0KDQpXZWJzaXRlIGFkbWluaXN0cmF0aW9uLg==
-
TmV3IEVtYWlsIFJFUExZIFJlY2VpdmVkIGluICJGZWVkYmFjayBNYW5hZ2VyIiAoPGlucDI6Zm9ybXN1YnMuLWl0ZW1fRmllbGQgbmFtZT0iRm9ybVN1Ym1pc3Npb25JZCIvPik=
TmV3IEVtYWlsIFJFUExZIFJlY2VpdmVkIGluICZxdW90O0ZlZWRiYWNrIE1hbmFnZXImcXVvdDsuPGJyIC8+DQo8YnIgLz4NCk9yaWdpbmFsIEZlZWRiYWNrSWQ6IDxpbnAyOmZvcm1zdWJzLi1pdGVtX0ZpZWxkIG5hbWU9IkZvcm1TdWJtaXNzaW9uSWQiLz4gPGJyIC8+DQpPcmlnaW5hbCBTdWJqZWN0OiA8aW5wMjpmb3Jtc3Vicy4taXRlbV9Gb3JtRmllbGQgcm9sZT0ic3ViamVjdCIvPiA8YnIgLz4NCjxiciAvPg0KUGxlYXNlIHByb2NlZWQgdG8gdGhlIEFkbWluIENvbnNvbGUgaW4gb3JkZXIgdG8gcmV2aWV3IGFuZCByZXBseSB0byB0aGUgdXNlci4=
Index: branches/5.2.x/core/units/helpers/helpers_config.php
===================================================================
diff -u -N -r15130 -r15225
--- branches/5.2.x/core/units/helpers/helpers_config.php (.../helpers_config.php) (revision 15130)
+++ branches/5.2.x/core/units/helpers/helpers_config.php (.../helpers_config.php) (revision 15225)
@@ -1,6 +1,6 @@
'BracketsHelper', 'class' => 'kBracketsHelper', 'file' => 'brackets_helper.php', 'build_event' => ''),
Array ('pseudo' => 'kXMLHelper', 'class' => 'kXMLHelper', 'file' => 'xml_helper.php', 'build_event' => ''),
Array ('pseudo' => 'CatItemExportHelper', 'class' => 'kCatDBItemExportHelper', 'file' => 'cat_dbitem_export_helper.php', 'build_event' => ''),
- Array ('pseudo' => 'EmailMessageHelper', 'class' => 'EmailMessageHelper', 'file' => 'email_message_helper.php', 'build_event' => ''),
+ Array ('pseudo' => 'kEmailMessageHelper', 'class' => 'kEmailMessageHelper', 'file' => 'email_message_helper.php', 'build_event' => ''),
Array ('pseudo' => 'ListHelper', 'class' => 'ListHelper', 'file' => 'list_helper.php', 'build_event' => ''),
Array ('pseudo' => 'FormSubmissionHelper', 'class' => 'FormSubmissionHelper', 'file' => 'form_submission_helper.php', 'build_event' => ''),