Index: core/kernel/utility/email.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/kernel/utility/email.php (revision 15931)
+++ core/kernel/utility/email.php (revision )
@@ -120,6 +120,7 @@
$this->toEmail = $this->toEmail = '';
$this->Application->removeObject('u.email-to');
+ $this->itemId = 0;
}
/**
@@ -204,7 +205,7 @@
protected function _getCustomParams()
{
$ret = $this->params;
- $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'overwrite_to_email', 'language_id', 'use_custom_design', 'delivery');
+ $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'overwrite_to_email', 'language_id', 'use_custom_design', 'delivery', 'item_id');
foreach ($send_keys as $send_key) {
unset($ret[$send_key]);
@@ -248,6 +249,8 @@
if ( $this->_storeEmailLog() ) {
// 2. prepare log
+ $custom_params = $this->_getCustomParams();
+
$log_fields_hash = Array (
'From' => $this->fromName . ' (' . $this->fromEmail . ')',
'To' => $this->toName . ' (' . $this->toEmail . ')',
@@ -256,7 +259,10 @@
'SentOn' => TIMENOW,
'TemplateName' => $this->emailTemplate->GetDBField('TemplateName'),
'EventType' => $this->emailTemplate->GetDBField('Type'),
- 'EventParams' => serialize($this->_getCustomParams()),
+ 'EventParams' => serialize($custom_params),
+ 'ToUserId' => $this->recipientUserId,
+ 'ItemPrefix' => isset($custom_params['PrefixSpecial']) ? array_shift(explode('.', $custom_params['PrefixSpecial'])) : '',
+ 'ItemId' => isset($this->params['item_id']) ? $this->params['item_id'] : null,
);
$this->params['email_access_key'] = $this->_generateAccessKey($log_fields_hash);
Index: core/install/upgrades.sql
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/install/upgrades.sql (revision 15931)
+++ core/install/upgrades.sql (revision )
@@ -2948,3 +2948,8 @@
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;
+ALTER TABLE EmailLog ADD ItemPrefix VARCHAR(50) NOT NULL DEFAULT '';
+ALTER TABLE EmailLog ADD ItemId INT(11) DEFAULT NULL;
+DELETE FROM UserPersistentSessionData WHERE VariableName = 'email-log[Default]columns_.';
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 15931)
+++ core/units/users/users_item.php (revision )
@@ -55,16 +55,18 @@
function sendEmails()
{
+ $spec_params = $this->getEmailSpecialParams();
+
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->emailAdmin($event_name, null, $spec_params);
+ $this->Application->emailUser($event_name, $this->GetID(), $spec_params);
break;
case STATUS_PENDING:
- $this->Application->emailAdmin('USER.ADD.PENDING');
- $this->Application->emailUser('USER.ADD.PENDING', $this->GetID());
+ $this->Application->emailAdmin('USER.ADD.PENDING', null, $spec_params);
+ $this->Application->emailUser('USER.ADD.PENDING', $this->GetID(), $spec_params);
break;
}
}
\ No newline at end of file
Index: core/units/spam_reports/spam_report_eh.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/spam_reports/spam_report_eh.php (revision 15931)
+++ core/units/spam_reports/spam_report_eh.php (revision )
@@ -98,9 +98,14 @@
/* @var $item kDBItem */
$object->SetDBField('ItemName', $item->GetDBField('ReviewText'));
+ $spec_params = $item->getEmailSpecialParams();
}
+ else {
+ $spec_params = $object->getEmailSpecialParams();
+ }
- $this->Application->emailAdmin('SPAM.REPORT');
+
+ $this->Application->emailAdmin('SPAM.REPORT', null, $spec_params);
}
/**
\ 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 15931)
+++ core/units/forms/form_submissions/form_submissions_eh.php (revision )
@@ -242,17 +242,18 @@
$form =& $form_submission_helper->getForm($object);
$notify_email = $form->GetDBField('SubmitNotifyEmail');
+ $spec_params = $object->getEmailSpecialParams();
if ( $notify_email ) {
- $send_params = Array (
+ $send_params = array_merge(Array (
'to_name' => $notify_email,
'to_email' => $notify_email,
- );
+ ), $spec_params);
$this->Application->emailAdmin('FORM.SUBMITTED', null, $send_params);
}
else {
- $this->Application->emailAdmin('FORM.SUBMITTED');
+ $this->Application->emailAdmin('FORM.SUBMITTED', null, $spec_params);
}
// $this->Application->emailUser('FORM.SUBMITTED', null, Array ('to_email' => ''));
\ No newline at end of file
Index: core/kernel/db/cat_dbitem.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/kernel/db/cat_dbitem.php (revision 15931)
+++ core/kernel/db/cat_dbitem.php (revision )
@@ -497,7 +497,7 @@
}
$event_name .= $new_status == STATUS_ACTIVE ? '.APPROVE' : '.DENY';
- $this->Application->emailUser($event_name, $this->GetDBField($owner_field));
+ $this->Application->emailUser($event_name, $this->GetDBField($owner_field), $this->getEmailSpecialParams());
}
/**
\ No newline at end of file
Index: core/units/reviews/reviews_event_handler.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/reviews/reviews_event_handler.php (revision 15931)
+++ core/units/reviews/reviews_event_handler.php (revision )
@@ -364,8 +364,10 @@
if ( $review_status == STATUS_ACTIVE || $review_status == STATUS_PENDING ) {
$email_event = $this->getPermPrefix($event) . '.REVIEW.' . ($review_status == STATUS_ACTIVE ? 'ADD' : 'ADD.PENDING');
- $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'));
- $this->Application->emailAdmin($email_event);
+ $spec_params = $object->getEmailSpecialParams();
+
+ $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'), $spec_params);
+ $this->Application->emailAdmin($email_event, null, $spec_params);
}
}
}
@@ -395,7 +397,7 @@
$this->_loadMainObject($event);
$email_event = $this->getPermPrefix($event) . '.REVIEW.' . ($review_status == STATUS_ACTIVE ? 'APPROVE' : 'DENY');
- $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'));
+ $this->Application->emailUser($email_event, $object->GetDBField('CreatedById'), $object->getEmailSpecialParams());
}
}
}
\ 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 15931)
+++ core/units/forms/forms/forms_eh.php (revision )
@@ -231,12 +231,13 @@
if ( $object->Validate() ) {
$event->redirect = $this->Application->GetVar('success_template');
- $this->Application->emailAdmin($this->Application->GetVar('email_event'));
+ $spec_params = $object->getEmailSpecialParams();
+ $this->Application->emailAdmin($this->Application->GetVar('email_event'), null, $spec_params);
- $send_params = Array (
+ $send_params = array_merge(Array (
'to_email' => $field_values[$this->Application->GetVar('email_field')],
'to_name' => $field_values[$this->Application->GetVar('name_field')]
- );
+ ), $spec_params);
$this->Application->emailUser($this->Application->GetVar('email_event'), null, $send_params);
\ No newline at end of file
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 15931)
+++ core/units/logs/email_logs/email_logs_config.php (revision )
@@ -91,6 +91,9 @@
),
'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, 'not_null' => 1, 'default' => ''),
+ 'ItemId' => Array ('type' => 'int', 'default' => NULL)
),
'Grids' => Array (
@@ -104,6 +107,9 @@
'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'),
+ 'ToUserId' => Array ('filter_block' => 'grid_range_filter', 'width' => 80),
+ 'ItemPrefix' => Array ('filter_block' => 'grid_like_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 15931)
+++ core/kernel/db/dbitem.php (revision )
@@ -1554,4 +1554,18 @@
{
$this->Loaded = $is_loaded;
}
+
+ /**
+ * Returs email special params
+ *
+ * @access public
+ * @return Array
+ */
+ public function getEmailSpecialParams()
+ {
+ return Array (
+ 'PrefixSpecial' => $this->getPrefixSpecial(),
+ 'item_id' => $this->GetID(),
+ );
+ }
}
\ No newline at end of file
Index: core/units/forms/submission_log/submission_log_eh.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/units/forms/submission_log/submission_log_eh.php (revision 15931)
+++ core/units/forms/submission_log/submission_log_eh.php (revision )
@@ -380,7 +380,7 @@
}
}
- $this->Application->emailAdmin('FORM.SUBMISSION.REPLY.TO.USER', null, $send_params);
+ $this->Application->emailAdmin('FORM.SUBMISSION.REPLY.TO.USER', null, array_merge($send_params, $form_submission->getEmailSpecialParams()));
// mark as sent after sending is finished
$object->SetDBField('SentStatus', SUBMISSION_LOG_SENT);
@@ -437,7 +437,12 @@
if ( $this->Application->GetVar('client_mode') ) {
// new reply from client received -> send notification about it
- $this->Application->emailAdmin('FORM.SUBMISSION.REPLY.FROM.USER');
+
+ $form_submission_helper = $this->Application->recallObject('FormSubmissionHelper');
+ /* @var $form_submission_helper FormSubmissionHelper */
+
+ $spec_params = $form_submission_helper->getSubmissionFromLog($object)->getEmailSpecialParams();
+ $this->Application->emailAdmin('FORM.SUBMISSION.REPLY.FROM.USER', null, $spec_params);
}
}
@@ -487,7 +492,12 @@
$sent_status = $object->GetDBField('SentStatus');
if ( $object->GetOriginalField('SentStatus') != $sent_status && $sent_status == SUBMISSION_LOG_BOUNCE ) {
- $this->Application->emailAdmin('FORM.SUBMISSION.REPLY.FROM.USER.BOUNCED');
+
+ $form_submission_helper = $this->Application->recallObject('FormSubmissionHelper');
+ /* @var $form_submission_helper FormSubmissionHelper */
+
+ $spec_params = $form_submission_helper->getSubmissionFromLog($object)->getEmailSpecialParams();
+ $this->Application->emailAdmin('FORM.SUBMISSION.REPLY.FROM.USER.BOUNCED', null, $spec_params);
}
}
\ 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 15931)
+++ core/units/users/users_event_handler.php (revision )
@@ -657,9 +657,11 @@
'to_name' => $object->GetDBField('RecommendEmail'),
);
+ $spec_params = $object->getEmailSpecialParams();
+
$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, array_merge($send_params, $spec_params));
+ $this->Application->emailAdmin('USER.SUGGEST', null, $spec_params);
if ( $email_sent ) {
$event->SetRedirectParam('pass', 'all');
@@ -816,8 +818,9 @@
$this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'UserGroupRelations');
}
- $this->Application->emailAdmin('USER.SUBSCRIBE');
- $this->Application->emailUser('USER.SUBSCRIBE', $object->GetID());
+ $spec_params = $object->getEmailSpecialParams();
+ $this->Application->emailAdmin('USER.SUBSCRIBE', null, $spec_params);
+ $this->Application->emailUser('USER.SUBSCRIBE', $object->GetID(), $spec_params);
}
/**
@@ -833,8 +836,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);
+ $spec_params = Array (
+ 'PrefixSpecial' => 'u',
+ 'item_id' => $user_id
+ );
+
+ $this->Application->emailAdmin('USER.UNSUBSCRIBE', null, $spec_params);
+ $this->Application->emailUser('USER.UNSUBSCRIBE', $user_id, $spec_params);
}
/**
@@ -877,7 +885,7 @@
}
if ($found && $allow_reset) {
- $this->Application->emailUser('USER.PSWDC', $user->GetID());
+ $this->Application->emailUser('USER.PSWDC', $user->GetID(), $user->getEmailSpecialParams());
$event->redirect = $this->Application->GetVar('template_success');
return ;
@@ -1038,11 +1046,15 @@
$records = $this->Conn->Query($sql);
if ($records) {
$conditions = Array();
+ $spec_params = Array ('PrefixSpecial' => 'u');
+
foreach ($records as $record) {
- $this->Application->emailUser('USER.MEMBERSHIP.EXPIRATION.NOTICE', $record['PortalUserId']);
- $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRATION.NOTICE');
+ $spec_params['item_id'] = $record['PortalUserId'];
+ $this->Application->emailUser('USER.MEMBERSHIP.EXPIRATION.NOTICE', $record['PortalUserId'], $spec_params);
+ $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRATION.NOTICE', null, $spec_params);
$conditions[] = '(PortalUserId = '.$record['PortalUserId'].' AND GroupId = '.$record['GroupId'].')';
}
+
$sql = 'UPDATE '.TABLE_PREFIX.'UserGroupRelations
SET ExpirationReminderSent = 1
WHERE '.implode(' OR ', $conditions);
@@ -1056,9 +1068,12 @@
WHERE (MembershipExpires IS NOT NULL) AND (MembershipExpires < '.time().')';
$user_ids = $this->Conn->GetCol($sql);
if ($user_ids) {
+ $spec_params = Array ('PrefixSpecial' => 'u');
+
foreach ($user_ids as $id) {
- $this->Application->emailUser('USER.MEMBERSHIP.EXPIRED', $id);
- $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRED');
+ $spec_params['item_id'] = $id;
+ $this->Application->emailUser('USER.MEMBERSHIP.EXPIRED', $id, $spec_params);
+ $this->Application->emailAdmin('USER.MEMBERSHIP.EXPIRED', null, $spec_params);
}
}
$sql = 'DELETE FROM '.TABLE_PREFIX.'UserGroupRelations
@@ -1384,7 +1399,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->getEmailSpecialParams());
unset($email_passwords[$temp_id]);
$this->Application->StoreVar('email_passwords', serialize($email_passwords));
@@ -1433,8 +1448,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);
+
+ $spec_params = Array (
+ 'PrefixSpecial' => 'u',
+ 'item_id' => $user_id,
+ );
+
+ $this->Application->emailUser($email_event, $user_id, $spec_params);
+ $this->Application->emailAdmin($email_event, null, $spec_params);
}
// deletes sessions from users, that are no longer active
@@ -1476,6 +1497,7 @@
);
$user_id = $object->GetID();
+ $spec_params = $object->getEmailSpecialParams();
if ( $prev_email ) {
$hash = md5(TIMENOW + $user_id);
@@ -1488,11 +1510,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, array_merge($send_params, $spec_params));
}
if ( $new_email ) {
- $this->Application->emailUser('USER.EMAIL.CHANGE.VERIFY', $user_id);
+ $this->Application->emailUser('USER.EMAIL.CHANGE.VERIFY', $user_id, $spec_params);
}
// direct DB update, since USER.EMAIL.CHANGE.VERIFY puts verification code in user record, that we don't want to loose
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 15931)
+++ core/admin_templates/logs/email_logs/email_log_edit.tpl (revision )
@@ -90,6 +90,11 @@
+
+
+
+
+