f0aa165b by Insu Mun

Add a notification message for individual notification of user. Also display use…

…r's notification message not the message saved in the content.
1 parent 2a58ec97
......@@ -66,22 +66,80 @@ function get_user_notices($uid)
*/
function print_user_notices($showOnlyUnread = false)
{
global $wpdb;
$user = new User\CurrentAccount();
get_user_notices($user->ID);
$notices = Vars::$notices;
$rows = '';
foreach ($notices as $index => $notice) {
if ($showOnlyUnread && $notice['status'] != 'unread') {
continue;
}
$triggered = get_post_meta($notice['notification_id'], 'trigger', true);
$enableTriggers = [
'MEMBERSHIP_FEES_DUE',
'STUDENT_FEES_DUE'
];
$system = get_post_meta($notice['notification_id'], 'system', true);
$content = '';
if(!isset($notice['message']) && in_array($triggered, $enableTriggers)){
$emailAddressPreference = get_user_meta($user->ID, 'email_address_preference', true);
if (empty($emailAddressPreference)) {
$userData = get_userdata($user->ID);
$toEmail = $userData->user_email;
} else {
$pp = strtolower($emailAddressPreference) . '_';
$toEmail = get_user_meta($user->ID, $pp . 'email', true);
if (empty($toEmail)) {
$userData = get_userdata($user->ID);
$toEmail = $userData->user_email;
}
}
$message = '';
if (in_array($triggered, $enableTriggers)) {
// Get old content from notification
$results = $wpdb->get_results(
"
SELECT `text`, `to_email`
FROM `wp_mail_daemon`
WHERE `notification_id` = " . $notice['notification_id'] . ";
"
);
if (count($results) <= 0) {
continue;
}
foreach ($results as $result) {
if ($toEmail == $result->to_email) {
$stringArray = (preg_split("/\r\n|\n|\r/", $result->text, -1, PREG_SPLIT_NO_EMPTY));
$message = implode("\n", [$stringArray[0], $stringArray[1]]);
break;
}
}
$notices[$index]['message'] = $message;
update_user_meta($user->ID, 'notices', $notices);
$content = $message;
}
} else {
if(isset($notice['message'])) {
$content = $notice['message'];
} else {
$content = isset($system[ICL_LANGUAGE_CODE.'_message'])
? $system[ICL_LANGUAGE_CODE.'_message']
: $system['en_message'];
}
}
if (isset($notice['args']) && count($notice['args']) > 0) {
foreach ($notice['args'] as $key => $val) {
......@@ -241,12 +299,36 @@ function send_triggered_notification($uid = 0, $trigger = 'NO_TRIGGER', $args =
get_user_notices($uid);
$notices = Vars::$notices;
// Add a system message into the usermeta as well to track the system notification.
$insert = [
'notification_id' => $nid,
'status' => 'unread',
'sent_date' => current_time('timestamp'),
'message' => $system[$lang.'_message'],
'args' => $args
];
// Convert the args to actual message
$content = $insert['message'];
if (isset($insert['args']) && count($insert['args']) > 0) {
foreach ($insert['args'] as $key => $val) {
if (filter_var($val, FILTER_VALIDATE_URL) !== false) {
$content = str_replace(
'{'.$key.'}',
"<a href='"
.$val
."'>"
.__('Click here', CBV_DOMAIN)
.'</a>',
$content
);
} else {
$content = str_replace('{'.$key.'}', $val, $content);
}
}
$insert['message'] = $content;
}
if (empty($notices)) {
$notices = [];
}
......