Index: core/units/logs/email_logs/email_logs_config.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/logs/email_logs/email_logs_config.php (revision 15908)
+++ core/units/logs/email_logs/email_logs_config.php (revision )
@@ -65,9 +65,16 @@
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
- FROM %1$s',
+ FROM %1$s
+ LEFT JOIN ' . TABLE_PREFIX . 'Users to_user ON %1$s.ToUserId = to_user.PortalUserId',
),
+ 'CalculatedFields' => Array (
+ '' => Array (
+ 'ToUser' => 'IF (ISNULL(to_user.Username), IF (%1$s.ToUserId = ' . USER_ROOT . ', "root", IF (%1$s.ToUserId = ' . USER_GUEST . ', "Guest", "n/a")), IF(to_user.Username = "", to_user.Email, to_user.Username))',
+ ),
+ ),
+
'ListSortings' => Array (
'' => Array (
'Sorting' => Array ('SentOn' => 'desc'),
@@ -91,19 +98,36 @@
),
'EventParams' => Array ('type' => 'string', 'default' => NULL),
'AccessKey' => Array ('type' => 'string', 'max_len' => 20, 'not_null' => 1, 'default' => ''),
+ 'ToUserId' => Array('type' => 'int', 'default' => NULL),
+ 'ItemPrefix' => Array(
+ 'type' => 'string', 'max_len' => 50,
+ 'formatter' => 'kOptionsFormatter',
+ 'options_sql' => 'SELECT DISTINCT %s FROM ' . TABLE_PREFIX . 'EmailLog ORDER BY Phrase',
+ 'option_key_field' => 'ItemPrefix', 'option_title_field' => 'CONCAT("la_prefix_", ItemPrefix) AS Phrase',
+ 'use_phrases' => 1,
+ 'not_null' => 1, 'default' => ''
- ),
+ ),
+ 'ItemId' => Array('type' => 'int', 'default' => NULL),
+ ),
+ 'VirtualFields' => array(
+ 'ToUser' => array('type' => 'string', 'default' => ''),
+ ),
+
'Grids' => Array (
'Default' => Array (
'Fields' => Array (
'EmailLogId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 80),
'From' => Array ('title' => 'column:la_fld_Sender', 'filter_block' => 'grid_like_filter', 'width' => 200),
'To' => Array ('title' => 'column:la_fld_Recipient', 'filter_block' => 'grid_like_filter', 'width' => 200),
+ 'ToUser' => Array ('title' => 'column:la_fld_RecipientUser', 'filter_block' => 'grid_like_filter', 'width' => 120),
'Subject' => Array ('filter_block' => 'grid_like_filter', 'width' => 200),
'TemplateName' => Array ('filter_block' => 'grid_like_filter', 'width' => 170),
'EventType' => Array ('title' => 'column:la_fld_Type', 'filter_block' => 'grid_options_filter', 'width' => 60),
'SentOn' => Array ('title' => 'la_prompt_SentOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145),
// 'EventParams' => Array ('title' => 'la_col_EventParams', 'filter_block' => 'grid_like_filter'),
+ 'ItemPrefix' => Array('filter_block' => 'grid_options_filter'),
+ 'ItemId' => Array('filter_block' => 'grid_range_filter', 'width' => 80),
),
),
),
\ No newline at end of file
Index: core/kernel/db/dbitem.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/kernel/db/dbitem.php (revision 15928)
+++ core/kernel/db/dbitem.php (revision )
@@ -1554,4 +1554,19 @@
{
$this->Loaded = $is_loaded;
}
+
+ /**
+ * Returns parser parameters, used to identify this object in the e-mail template.
+ *
+ * @param array $merge_with Original send params to merge with.
+ *
+ * @return array
+ */
+ public function getEmailParams(array $merge_with = array())
+ {
+ $merge_with['item_id'] = $this->GetID();
+ $merge_with['PrefixSpecial'] = $this->getPrefixSpecial();
+
+ return $merge_with;
+ }
}
\ No newline at end of file
Index: core/units/users/users_event_handler.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/users/users_event_handler.php (revision 15928)
+++ core/units/users/users_event_handler.php (revision )
@@ -658,8 +658,8 @@
);
$user_id = $this->Application->RecallVar('user_id');
- $email_sent = $this->Application->emailUser('USER.SUGGEST', $user_id, $send_params);
- $this->Application->emailAdmin('USER.SUGGEST');
+ $email_sent = $this->Application->emailUser('USER.SUGGEST', $user_id, $object->getEmailParams($send_params));
+ $this->Application->emailAdmin('USER.SUGGEST', null, $object->getEmailParams());
if ( $email_sent ) {
$event->SetRedirectParam('pass', 'all');
@@ -816,8 +816,9 @@
$this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'UserGroupRelations');
}
- $this->Application->emailAdmin('USER.SUBSCRIBE');
- $this->Application->emailUser('USER.SUBSCRIBE', $object->GetID());
+ $send_params = $object->getEmailParams();
+ $this->Application->emailUser('USER.SUBSCRIBE', $object->GetID(), $send_params);
+ $this->Application->emailAdmin('USER.SUBSCRIBE', null, $send_params);
}
/**
@@ -833,8 +834,13 @@
WHERE PortalUserId = ' . $user_id . ' AND GroupId = ' . $group_id;
$this->Conn->Query($sql);
- $this->Application->emailAdmin('USER.UNSUBSCRIBE');
- $this->Application->emailUser('USER.UNSUBSCRIBE', $user_id);
+ $send_params = Array (
+ 'PrefixSpecial' => 'u',
+ 'item_id' => $user_id
+ );
+
+ $this->Application->emailUser('USER.UNSUBSCRIBE', $user_id, $send_params);
+ $this->Application->emailAdmin('USER.UNSUBSCRIBE', null, $send_params);
}
/**
@@ -877,7 +883,7 @@
}
if ($found && $allow_reset) {
- $this->Application->emailUser('USER.PSWDC', $user->GetID());
+ $this->Application->emailUser('USER.PSWDC', $user->GetID(), $user->getEmailParams());
$event->redirect = $this->Application->GetVar('template_success');
return ;
@@ -1038,11 +1044,15 @@
$records = $this->Conn->Query($sql);
if ($records) {
$conditions = Array();
+ $send_params = Array ('PrefixSpecial' => 'u');
+
foreach ($records as $record) {
- $this->Application->emailUser('USER.MEMBERSHIP.EXPIRATION.NOTICE', $record['PortalUserId']);
- $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRATION.NOTICE');
+ $send_params['item_id'] = $record['PortalUserId'];
+ $this->Application->emailUser('USER.MEMBERSHIP.EXPIRATION.NOTICE', $record['PortalUserId'], $send_params);
+ $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRATION.NOTICE', null, $send_params);
$conditions[] = '(PortalUserId = '.$record['PortalUserId'].' AND GroupId = '.$record['GroupId'].')';
}
+
$sql = 'UPDATE '.TABLE_PREFIX.'UserGroupRelations
SET ExpirationReminderSent = 1
WHERE '.implode(' OR ', $conditions);
@@ -1056,9 +1066,12 @@
WHERE (MembershipExpires IS NOT NULL) AND (MembershipExpires < '.time().')';
$user_ids = $this->Conn->GetCol($sql);
if ($user_ids) {
+ $send_params = Array ('PrefixSpecial' => 'u');
+
foreach ($user_ids as $id) {
- $this->Application->emailUser('USER.MEMBERSHIP.EXPIRED', $id);
- $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRED');
+ $send_params['item_id'] = $id;
+ $this->Application->emailUser('USER.MEMBERSHIP.EXPIRED', $id, $send_params);
+ $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRED', null, $send_params);
}
}
$sql = 'DELETE FROM '.TABLE_PREFIX.'UserGroupRelations
@@ -1384,7 +1397,7 @@
$object->SetField('Password', $email_passwords[$temp_id]);
$object->SetField('VerifyPassword', $email_passwords[$temp_id]);
- $this->Application->emailUser($temp_id > 0 ? 'USER.NEW.PASSWORD': 'USER.ADD.BYADMIN', $object->GetID());
+ $this->Application->emailUser($temp_id > 0 ? 'USER.NEW.PASSWORD': 'USER.ADD.BYADMIN', $object->GetID(), $object->getEmailParams());
unset($email_passwords[$temp_id]);
$this->Application->StoreVar('email_passwords', serialize($email_passwords));
@@ -1433,8 +1446,14 @@
$email_event = isset($status_events[$new_status]) ? $status_events[$new_status] : false;
if (($prev_status != $new_status) && $email_event) {
- $this->Application->emailUser($email_event, $user_id);
- $this->Application->emailAdmin($email_event);
+
+ $send_params = Array (
+ 'PrefixSpecial' => 'u',
+ 'item_id' => $user_id,
+ );
+
+ $this->Application->emailUser($email_event, $user_id, $send_params);
+ $this->Application->emailAdmin($email_event, null, $send_params);
}
// deletes sessions from users, that are no longer active
@@ -1488,11 +1507,11 @@
'to_name' => trim($object->GetDBField('FirstName') . ' ' . $object->GetDBField('LastName')),
);
- $this->Application->emailUser('USER.EMAIL.CHANGE.UNDO', null, $send_params);
+ $this->Application->emailUser('USER.EMAIL.CHANGE.UNDO', null, $object->getEmailParams($send_params));
}
if ( $new_email ) {
- $this->Application->emailUser('USER.EMAIL.CHANGE.VERIFY', $user_id);
+ $this->Application->emailUser('USER.EMAIL.CHANGE.VERIFY', $user_id, $object->getEmailParams());
}
// direct DB update, since USER.EMAIL.CHANGE.VERIFY puts verification code in user record, that we don't want to loose
Index: core/install/install_schema.sql
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/install/install_schema.sql (revision 15908)
+++ core/install/install_schema.sql (revision )
@@ -432,6 +432,9 @@
EventType tinyint(4) DEFAULT NULL,
EventParams text,
AccessKey varchar(32) NOT NULL DEFAULT '',
+ ToUserId int(11) DEFAULT NULL,
+ ItemPrefix varchar(50) NOT NULL DEFAULT '',
+ ItemId int(11) DEFAULT NULL,
PRIMARY KEY (EmailLogId),
KEY `timestamp` (SentOn)
);
\ No newline at end of file
Index: core/units/forms/forms/forms_eh.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/forms/forms/forms_eh.php (revision 15928)
+++ core/units/forms/forms/forms_eh.php (revision )
@@ -231,13 +231,13 @@
if ( $object->Validate() ) {
$event->redirect = $this->Application->GetVar('success_template');
- $this->Application->emailAdmin($this->Application->GetVar('email_event'));
- $send_params = Array (
+ $this->Application->emailAdmin($this->Application->GetVar('email_event'), null, $object->getEmailParams());
+
+ $send_params = $object->getEmailParams(Array (
'to_email' => $field_values[$this->Application->GetVar('email_field')],
'to_name' => $field_values[$this->Application->GetVar('name_field')]
- );
-
+ ));
$this->Application->emailUser($this->Application->GetVar('email_event'), null, $send_params);
if ( $field_values['MailingList'] ) {
\ No newline at end of file
Index: core/units/forms/form_submissions/form_submissions_eh.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/forms/form_submissions/form_submissions_eh.php (revision 15908)
+++ core/units/forms/form_submissions/form_submissions_eh.php (revision )
@@ -244,15 +244,15 @@
$notify_email = $form->GetDBField('SubmitNotifyEmail');
if ( $notify_email ) {
- $send_params = Array (
+ $send_params = $object->getEmailParams(Array (
'to_name' => $notify_email,
'to_email' => $notify_email,
- );
+ ));
$this->Application->emailAdmin('FORM.SUBMITTED', null, $send_params);
}
else {
- $this->Application->emailAdmin('FORM.SUBMITTED');
+ $this->Application->emailAdmin('FORM.SUBMITTED', null, $object->getEmailParams());
}
// $this->Application->emailUser('FORM.SUBMITTED', null, Array ('to_email' => ''));
\ No newline at end of file
Index: core/units/users/users_item.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/users/users_item.php (revision 15928)
+++ core/units/users/users_item.php (revision )
@@ -55,16 +55,18 @@
function sendEmails()
{
+ $send_params = $this->getEmailParams();
+
switch ( $this->GetDBField('Status') ) {
case STATUS_ACTIVE:
$event_name = $this->Application->ConfigValue('User_Password_Auto') ? 'USER.VALIDATE' : 'USER.ADD';
- $this->Application->emailAdmin($event_name);
- $this->Application->emailUser($event_name, $this->GetID());
+ $this->Application->emailUser($event_name, $this->GetID(), $send_params);
+ $this->Application->emailAdmin($event_name, null, $send_params);
break;
case STATUS_PENDING:
- $this->Application->emailAdmin('USER.ADD.PENDING');
- $this->Application->emailUser('USER.ADD.PENDING', $this->GetID());
+ $this->Application->emailUser('USER.ADD.PENDING', $this->GetID(), $send_params);
+ $this->Application->emailAdmin('USER.ADD.PENDING', null, $send_params);
break;
}
}
\ No newline at end of file
Index: core/units/categories/categories_event_handler.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/categories/categories_event_handler.php (revision 15928)
+++ core/units/categories/categories_event_handler.php (revision )
@@ -902,7 +902,7 @@
if ( $new_status != $old_statuses[$category_id] && in_array($new_status, $process_statuses) ) {
$object->Load($category_id);
$email_event = $new_status == STATUS_ACTIVE ? 'CATEGORY.APPROVE' : 'CATEGORY.DENY';
- $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'));
+ $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'), $object->getEmailParams());
}
}
}
@@ -1509,11 +1509,12 @@
$event->SetRedirectParam('opener', 's');
// send email events
+ $send_params = $object->getEmailParams();
+ $event_suffix = $is_active ? 'ADD' : 'ADD.PENDING';
$perm_prefix = $event->getUnitConfig()->getPermItemPrefix();
- $event_suffix = $is_active ? 'ADD' : 'ADD.PENDING';
- $this->Application->emailAdmin($perm_prefix . '.' . $event_suffix);
- $this->Application->emailUser($perm_prefix . '.' . $event_suffix, $object->GetDBField('CreatedById'));
+ $this->Application->emailUser($perm_prefix . '.' . $event_suffix, $object->GetDBField('CreatedById'), $send_params);
+ $this->Application->emailAdmin($perm_prefix . '.' . $event_suffix, null, $send_params);
}
/**
@@ -1607,7 +1608,7 @@
$event->status = kEvent::erSUCCESS;
$email_event = $event->Name == 'OnMassApprove' ? 'CATEGORY.APPROVE' : 'CATEGORY.DENY';
- $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'));
+ $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'), $object->getEmailParams());
}
else {
$event->status = kEvent::erFAIL;
\ No newline at end of file
Index: core/install/upgrades.sql
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/install/upgrades.sql (revision 15917)
+++ core/install/upgrades.sql (revision )
@@ -2948,3 +2948,10 @@
INSERT INTO SystemSettings VALUES(DEFAULT, 'EmailDelivery', '2', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsMailling', 'la_config_EmailDelivery', 'radio', NULL, '1=la_opt_EmailDeliveryQueue||2=la_opt_EmailDeliveryImmediate', 50.11, 0, 1, NULL);
DELETE FROM UserPersistentSessionData WHERE VariableName = 'email-queue[Default]columns_.';
+
+ALTER TABLE EmailLog
+ ADD ToUserId INT(11) DEFAULT NULL,
+ ADD ItemPrefix VARCHAR(50) NOT NULL DEFAULT '',
+ ADD ItemId INT(11) DEFAULT NULL;
+
+DELETE FROM UserPersistentSessionData WHERE VariableName = 'email-log[Default]columns_.';
Index: core/admin_templates/logs/email_logs/email_log_edit.tpl
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/admin_templates/logs/email_logs/email_log_edit.tpl (revision 15908)
+++ core/admin_templates/logs/email_logs/email_log_edit.tpl (revision )
@@ -90,6 +90,12 @@
+
+
+
+
+
+