2004 lines
115 KiB
PHP
2004 lines
115 KiB
PHP
<?php
|
||
/**
|
||
* Class: Notification template.
|
||
*
|
||
* Logger class for wsal.
|
||
*
|
||
* @since 5.3.0
|
||
*
|
||
* @package wsal
|
||
* @subpackage helpers
|
||
*/
|
||
|
||
namespace WSAL\Extensions\Helpers;
|
||
|
||
use WpSecurityAuditLog;
|
||
use WSAL\Helpers\WP_Helper;
|
||
use WSAL\Helpers\User_Helper;
|
||
use WSAL\Views\Notifications;
|
||
use WSAL\Helpers\Settings_Helper;
|
||
use WSAL\Controllers\Alert_Manager;
|
||
use WSAL\Helpers\Plugin_Settings_Helper;
|
||
|
||
// Exit if accessed directly.
|
||
if ( ! defined( 'ABSPATH' ) ) {
|
||
exit;
|
||
}
|
||
|
||
/*
|
||
* Notifications Helper class
|
||
*/
|
||
if ( ! class_exists( '\WSAL\Extensions\Helpers\Notification_Template' ) ) {
|
||
/**
|
||
* This class triggers notifications if set.
|
||
*
|
||
* @package wsal
|
||
* @subpackage helpers
|
||
*
|
||
* @since 5.3.0
|
||
*/
|
||
class Notification_Template {
|
||
|
||
/**
|
||
* User Data.
|
||
*
|
||
* @since 5.3.0
|
||
*
|
||
* @var array
|
||
*/
|
||
private static $user_data = array();
|
||
|
||
/**
|
||
* Generate Report Body.
|
||
*
|
||
* @param WSAL_Models_Occurrence[] $events - Array of events.
|
||
* @param string $report_date - Date of report.
|
||
* @param int $total_events - Number of events.
|
||
* @param string $report_wsal_start_date - The start date of the report.
|
||
* @param bool|string $report_wsal_end_date - End date (if present - if that is a weekly report - there should be one).
|
||
*
|
||
* @since 5.3.0
|
||
*/
|
||
public static function generate_report_body( $events, $report_date, $total_events, $report_wsal_start_date, $report_wsal_end_date = false ): string {
|
||
|
||
$header = '
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||
<title>WP Activity Log</title>
|
||
|
||
<!--[if mso]>
|
||
<style>
|
||
body,table,td,h2,h3,span,p {
|
||
font-family: \'Quicksand\', \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif !important;
|
||
}
|
||
</style>
|
||
<![endif]-->
|
||
|
||
<link rel="preconnect" href="https://fonts.googleapis.com"/>
|
||
<link rel="preconnect" href="https://fonts.gstatic.com"/>
|
||
<link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300..700&display=swap" rel="stylesheet"/>
|
||
|
||
<style type="text/css">
|
||
html, body {
|
||
margin: 0 auto !important;
|
||
padding: 0 !important;
|
||
height: 100% !important;
|
||
width: 100% !important;
|
||
}
|
||
|
||
/* Override blue links in footer */
|
||
.footer-text a[x-apple-data-detectors] {
|
||
color: #ffffff !important;
|
||
font-size: inherit !important;
|
||
font-family: inherit !important;
|
||
font-weight: inherit !important;
|
||
line-height: inherit !important;
|
||
}
|
||
|
||
u+#body .footer-text a {
|
||
color: #ffffff !important;
|
||
font-size: inherit !important;
|
||
font-family: inherit !important;
|
||
font-weight: inherit !important;
|
||
line-height: inherit !important;
|
||
}
|
||
|
||
#MessageViewBody .footer-text a {
|
||
color: #ffffff !important;
|
||
font-size: inherit !important;
|
||
font-family: inherit !important;
|
||
font-weight: inherit !important;
|
||
line-height: inherit !important;
|
||
}
|
||
|
||
table, td {
|
||
border-spacing: 0;
|
||
mso-table-lspace: 0;
|
||
mso-table-rspace: 0;
|
||
}
|
||
|
||
img {
|
||
border: 0;
|
||
height: auto;
|
||
line-height: 100%;
|
||
outline: none;
|
||
text-decoration: none;
|
||
-ms-interpolation-mode: bicubic;
|
||
}
|
||
|
||
a {
|
||
color: #0000EE;
|
||
text-decoration: underline;
|
||
}
|
||
|
||
a:hover, a:hover img {
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
transition: opacity .2s ease-in-out;
|
||
}
|
||
|
||
.applelink-white a {
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
/* Zebra striping for tables */
|
||
table.zebra-striped tr:nth-child(even) {
|
||
background-color: #F0F4FE;
|
||
}
|
||
|
||
table.zebra-striped tr:nth-child(odd) {
|
||
background-color: #ffffff;
|
||
}
|
||
|
||
@media only screen and (max-width: 599px), only screen and (max-device-width: 599px) {
|
||
.hide {
|
||
display: none !important;
|
||
}
|
||
|
||
.responsive-full {
|
||
width: 100% !important;
|
||
min-width: 100% !important;
|
||
}
|
||
|
||
.responsive {
|
||
width: 100% !important;
|
||
min-width: 100% !important;
|
||
padding-left: 30px !important;
|
||
padding-right: 30px !important;
|
||
}
|
||
|
||
.inner-td {
|
||
padding-bottom: 60px !important;
|
||
}
|
||
|
||
.responsive-image img {
|
||
width: 50%% !important;
|
||
min-width: 50%% !important;
|
||
}
|
||
|
||
.responsive-icon img {
|
||
width: 48px !important;
|
||
min-width: 48px !important;
|
||
}
|
||
|
||
.responsive-stack {
|
||
width: 100% !important;
|
||
display: block !important;
|
||
}
|
||
|
||
.mob-body-text {
|
||
font-size: 20px !important;
|
||
line-height: 28px !important;
|
||
}
|
||
|
||
.mob-title-text {
|
||
font-size: 40px !important;
|
||
line-height: 56px !important;
|
||
}
|
||
|
||
.center {
|
||
text-align: center !important;
|
||
padding-bottom: 15px !important;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body style="margin:0;padding:0;min-width:100%;background-color:#ffffff;font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:18px;line-height:24px;color:#1A3060;font-weight: 400;" id="body" class="body">
|
||
';
|
||
|
||
$footer = '</body></html>';
|
||
|
||
$media['wp-activity-log'] = trailingslashit( WSAL_BASE_URL ) . 'img/mails/daily-notification/wp-activity-log.png';
|
||
$media['documentation'] = trailingslashit( WSAL_BASE_URL ) . 'img/mails/daily-notification/documentation.png';
|
||
$media['support'] = trailingslashit( WSAL_BASE_URL ) . 'img/mails/daily-notification/support.png';
|
||
$media['melapress-icon'] = trailingslashit( WSAL_BASE_URL ) . 'img/mails/daily-notification/melapress-icon.png';
|
||
$media['wsal-dg-footer-bg'] = trailingslashit( WSAL_BASE_URL ) . 'img/mails/daily-notification/wsal-dg-footer-bg.png';
|
||
|
||
$current_settings = Settings_Helper::get_option_value( Notifications::NOTIFICATIONS_SETTINGS_NAME, array() );
|
||
|
||
$number_to_include = Notification_Helper::NUMBER_OF_EVENTS_TO_INCLUDE;
|
||
|
||
if ( isset( $current_settings['notification_summary_number_of_events_included'] ) && Notification_Helper::NUMBER_OF_EVENTS_TO_INCLUDE === (int) $current_settings['notification_summary_number_of_events_included'] ) {
|
||
$number_to_include = Notification_Helper::NUMBER_OF_EVENTS_TO_INCLUDE;
|
||
} elseif ( isset( $current_settings['notification_summary_number_of_events_included'] ) && 1 === (int) $current_settings['notification_summary_number_of_events_included'] ) {
|
||
$number_to_include = PHP_INT_MAX; // Show all events.
|
||
}
|
||
|
||
$home_url = \home_url();
|
||
$safe_url = str_replace( array( 'http://', 'https://' ), '', $home_url );
|
||
|
||
$number_of_logins = 0; // Number of logins.
|
||
$login_events = array(); // Login events.
|
||
$failed_logins_wrong_pass = array(); // Failed logins wrong pass.
|
||
$failed_logins_wrong_user = array(); // Failed logins wrong user.
|
||
$password_changes = array(); // Password changes.
|
||
$forced_password_changes = array(); // Forced password changes.
|
||
$user_profile_changes = array(); // User profile changes.
|
||
$multisite_activity = array(); // Multisite network activity.
|
||
$plugin_activity = array(); // Plugin activity.
|
||
$system_activity = array(); // System activity.
|
||
$posts_published = array(); // Posts published.
|
||
$posts_trashed = array(); // Posts trashed.
|
||
$posts_deleted = array(); // Posts deleted.
|
||
$posts_modified = array(); // Posts modified.
|
||
$posts_status_changed = array(); // Posts status changes.
|
||
$files_added = array(); // Files added.
|
||
$files_modified = array(); // Files modified.
|
||
$files_deleted = array(); // Files deleted.
|
||
|
||
$login_events_ids = array( 1000, 1005 ); // Login events.
|
||
$password_changes_events = array( 4003 ); // Login events.
|
||
$forced_password_changes_events = array( 4004 ); // Login events.
|
||
$failed_logins_events = array( 1002, 1003 ); // Failed login events.
|
||
$failed_logins_wrong_pass_events = array( 1002 ); // Failed login events.
|
||
$failed_logins_wrong_user_events = array( 1003 ); // Failed login events.
|
||
$posts_published_events = array( 2001 ); // Login events.
|
||
$posts_trashed_events = array( 2012 ); // Login events.
|
||
$posts_deleted_events = array( 2008 ); // Login events.
|
||
$posts_modified_events = array( 2065 ); // Login events.
|
||
$posts_status_changed_events = array( 2021 ); // Login events.
|
||
$system_activity_events = \array_keys( Alert_Manager::get_alerts_by_category( esc_html__( 'WordPress & System', 'wp-security-audit-log' ) ) );
|
||
$plugin_events = array( 5000, 5001, 5002, 5003, 5004 ); // Plugin events.
|
||
$user_profile_events = array( 4000, 4001, 4002, 4007 ); // Multisite events.
|
||
$multisite_events = array( 4010, 4011, 7000, 7001, 7002, 7003, 7004, 7005 ); // Multisite events.
|
||
|
||
if ( ! empty( $events ) ) {
|
||
foreach ( $events as $event ) {
|
||
if ( in_array( (int) $event['alert_id'], $login_events_ids, true ) ) {
|
||
++$number_of_logins;
|
||
$login_events[] = $event;
|
||
} elseif ( 1002 === (int) $event['alert_id'] ) {
|
||
$failed_logins_wrong_pass[] = $event;
|
||
} elseif ( 1003 === (int) $event['alert_id'] ) {
|
||
$failed_logins_wrong_user[] = $event;
|
||
} elseif ( 4003 === (int) $event['alert_id'] ) {
|
||
$password_changes[] = $event;
|
||
} elseif ( 4004 === (int) $event['alert_id'] ) {
|
||
$forced_password_changes[] = $event;
|
||
} elseif ( in_array( (int) $event['alert_id'], $plugin_events, true ) ) {
|
||
$plugin_activity[] = $event;
|
||
} elseif ( in_array( (int) $event['alert_id'], $system_activity_events, true ) ) {
|
||
$system_activity[] = $event;
|
||
} elseif ( 2001 === (int) $event['alert_id'] ) {
|
||
$posts_published[] = $event;
|
||
} elseif ( 2012 === (int) $event['alert_id'] ) {
|
||
$posts_trashed[] = $event;
|
||
} elseif ( 2008 === (int) $event['alert_id'] ) {
|
||
$posts_deleted[] = $event;
|
||
} elseif ( 2065 === (int) $event['alert_id'] ) {
|
||
$posts_modified[] = $event;
|
||
} elseif ( in_array( (int) $event['alert_id'], $posts_status_changed_events, true ) ) {
|
||
$posts_status_changed[] = $event;
|
||
} elseif ( in_array( (int) $event['alert_id'], $user_profile_events, true ) ) {
|
||
$user_profile_changes[] = $event;
|
||
} elseif ( in_array( (int) $event['alert_id'], $multisite_events, true ) ) {
|
||
$multisite_activity[] = $event;
|
||
} elseif ( 6028 === (int) $event['alert_id'] ) {
|
||
$files_modified[] = $event;
|
||
} elseif ( 6029 === (int) $event['alert_id'] ) {
|
||
$files_added[] = $event;
|
||
} elseif ( 6030 === (int) $event['alert_id'] ) {
|
||
$files_deleted[] = $event;
|
||
}
|
||
}
|
||
}
|
||
|
||
$set_link = ( 'free' !== \WpSecurityAuditLog::get_plugin_version() ) ? 'premium' : 'free';
|
||
$show_free_link = false;
|
||
|
||
$body = '
|
||
<!-- Main Content Start -->
|
||
<table role="presentation" width="100%" border="0" cellpadding="0" cellspacing="0" style="min-width: 100%;" role="presentation">
|
||
<tr>
|
||
<td align="center">
|
||
|
||
<!-- Logo Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center" style="padding: 0 6px;">
|
||
<table role="presentation" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="min-width: 100%;">
|
||
<tr>
|
||
<td align="center" style="padding: 20px 0 15px;">
|
||
<a href="https://melapress.com/wordpress-activity-log/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=top-logo" style="color:#1A3060; font-weight: 700;" target="_blank">
|
||
<img src="' . $media['wp-activity-log'] . '" border="0" width="280" height="41" style="display: block;" alt="WP Activity Log"/>
|
||
</a>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Logo End -->
|
||
|
||
<!-- Title Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table role="presentation" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="min-width: 100%;">
|
||
<tr>
|
||
<td align="center" valign="top" style="font-family: \'Quicksand\', \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:41px;line-height:56px;color:#1A3060;font-weight: 700;" class="mob-title-text">
|
||
<h1 style="font-family: \'Quicksand\', \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:32px;line-height:42px;color:#8AAAF1;font-weight: 700;padding: 0;margin: 0;">' . ( ( $report_wsal_end_date ) ? __( 'Your website\'s weekly', 'wp-security-audit-log' ) : __( 'Your website\'s daily', 'wp-security-audit-log' ) ) . '<br> WordPress activity log highlights</h1>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Title End -->
|
||
|
||
<!-- Hello Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 30px; padding-bottom: 8px;">Hello,</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left; padding-bottom: 20px;">
|
||
';
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$date_format = Settings_Helper::get_date_format();
|
||
|
||
$end_date_obj = new \DateTime( $report_wsal_end_date, \wp_timezone() );
|
||
$end = $end_date_obj->getTimestamp();
|
||
|
||
$display_date = \wp_date( $date_format, $end );
|
||
|
||
$body .= sprintf( 'This email was sent from your <a href="%1$s" target="_blank" style="color: #404040; text-decoration: none; display: inline-block;">%2$s</a>. It is a summary generated by the WP Activity Log plugin about what happened between %3$s and %4$s.', $home_url, $safe_url, $report_date, $display_date );
|
||
} else {
|
||
$body .= sprintf( 'This email was sent from your <a href="%1$s" target="_blank" style="color: #404040; text-decoration: none; display: inline-block;">%2$s</a>. It is a summary generated by the WP Activity Log plugin about what happened on %3$s.', $home_url, $safe_url, $report_date );
|
||
}
|
||
|
||
// $body .= '</td></tr><!-- Desc End -->';
|
||
|
||
if ( empty( $events ) ) {
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 28px; color: #404040; text-align: left; padding-bottom: 34px;">No events so far.</td></tr><!-- Desc End -->';
|
||
}
|
||
|
||
$body .= '
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- </td> -->
|
||
<!-- </tr> -->
|
||
<!-- </table> -->
|
||
<!-- Hello End -->
|
||
';
|
||
|
||
if ( true /*! empty( $events )*/ ) {
|
||
|
||
// User logins.
|
||
if ( ( isset( $current_settings['notification_summary_user_logins'] ) && $current_settings['notification_summary_user_logins'] ) || ! isset( $current_settings['notification_summary_user_logins'] ) ) {
|
||
if ( true /* $number_of_logins && ! empty( $login_events ) */ ) {
|
||
$user_logins = array();
|
||
foreach ( $login_events as $login_event ) {
|
||
$username = $login_event['username'];
|
||
$ipaddr = $login_event['client_ip'];
|
||
|
||
if ( ! empty( $username ) && ! empty( $ipaddr ) ) {
|
||
$user_logins[ $username ][] = $ipaddr;
|
||
}
|
||
}
|
||
$login_count_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d login', 'were %d logins', $number_of_logins, 'wp-security-audit-log' ),
|
||
$number_of_logins
|
||
);
|
||
$users_logged_count = ( is_array( $user_logins ) && ! empty( $user_logins ) ) ? count( $user_logins ) : '0';
|
||
$user_count_string = sprintf(
|
||
// translators: a number that is total count of unique users in a login group.
|
||
_n( '%d unique user', '%d unique users', $users_logged_count, 'wp-security-audit-log' ),
|
||
$users_logged_count
|
||
);
|
||
|
||
$body .= '
|
||
<!-- User Logins Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">User Logins</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">
|
||
';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site from %2$s.', 'wp-security-audit-log' ),
|
||
$login_count_string,
|
||
$user_count_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && $number_of_logins && ! empty( $login_events ) ) {
|
||
$body .= ' ' . __( 'Below is a list of the users and the IP addresses they logged in from:', 'wp-security-audit-log' );
|
||
}
|
||
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $login_events ) ) {
|
||
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
if ( ! empty( $user_logins ) ) {
|
||
// Set preserve_keys param to true to avoid reindexing the array. This prevents usernames like 4 from being changed in email reports.
|
||
$user_logins = array_slice( $user_logins, 0, $number_to_include, true );
|
||
foreach ( $user_logins as $username => $ipaddrs ) {
|
||
$ipaddr = array_unique( $ipaddrs );
|
||
$ipaddr = implode( ',', $ipaddr );
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
/* 1. Username 2. IP Address */
|
||
$body .= sprintf( 'User %1$s from %2$s', '<span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $username ) . '</span>', '<span style="display: inline-block; color: #009344;">' . $ipaddr . '</span>' );
|
||
$body .= '</td></tr>';
|
||
}
|
||
$body .= '</table></td>';
|
||
}
|
||
|
||
$body .= '
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<!-- User Logins End -->
|
||
';
|
||
|
||
$body .= '<tr><td align="center">';
|
||
|
||
$body .= '<div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
$show_free_link = true;
|
||
} elseif ( $number_of_logins && ! empty( $login_events ) ) {
|
||
$filters_string = '';
|
||
foreach ( $login_events_ids as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div>';
|
||
|
||
$body .= '</td></tr></table>';
|
||
}
|
||
}
|
||
|
||
// Failed user logins.
|
||
if ( ( isset( $current_settings['notification_summary_failed_logins'] ) && $current_settings['notification_summary_failed_logins'] ) || ! isset( $current_settings['notification_summary_failed_logins'] ) ) {
|
||
if ( ! empty( $failed_logins_wrong_pass ) || ! empty( $failed_logins_wrong_user ) ) {
|
||
$body .= '
|
||
<!-- Failed User Logins Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">Failed User Logins</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
|
||
/*
|
||
* Logs when logins were attempted that used the wrong password.
|
||
* Displays a message and a <table> of IPs.
|
||
*/
|
||
if ( ( isset( $current_settings['notification_wrong_password'] ) && $current_settings['notification_wrong_password'] ) || ! isset( $current_settings['notification_wrong_password'] ) ) {
|
||
if ( ! empty( $failed_logins_wrong_pass ) ) {
|
||
$user_failed_count = count( $failed_logins_wrong_pass );
|
||
$user_failed_pass = sprintf(
|
||
// translators: a number that is total count of unique users in a login group.
|
||
_n( '%d failed login due to a wrong password', '%d failed logins due to a wrong passwords', $user_failed_count, 'wp-security-audit-log' ),
|
||
$user_failed_count
|
||
);
|
||
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There were %1$s on your site.', 'wp-security-audit-log' ),
|
||
$user_failed_pass
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) ) {
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= esc_html__( 'They are from the following IP addresses:', 'wp-security-audit-log' );
|
||
$body .= '</td></tr>';
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$failed_logins_wrong_pass = array_slice( $failed_logins_wrong_pass, 0, $number_to_include );
|
||
|
||
$previous_ips = array();
|
||
foreach ( $failed_logins_wrong_pass as $event ) {
|
||
$current_ip = $event['client_ip'];
|
||
if ( ! in_array( $current_ip, $previous_ips, true ) ) {
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;"><span style="display: inline-block; color: #009344;">' . $current_ip . '</span></td></tr>';
|
||
$previous_ips[] = $current_ip;
|
||
}
|
||
}
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
$show_free_link = true;
|
||
} else {
|
||
$filters_string = '';
|
||
foreach ( $failed_logins_wrong_pass_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
}
|
||
}
|
||
|
||
/*
|
||
* Logs when logins were attempted that used the wrong username.
|
||
* Displays a message and a <table> of IPs.
|
||
*/
|
||
if ( ( isset( $current_settings['notification_summary_wrong_username'] ) && $current_settings['notification_summary_wrong_username'] ) || ! isset( $current_settings['notification_summary_wrong_username'] ) ) {
|
||
if ( ! empty( $failed_logins_wrong_user ) ) {
|
||
$body .= '<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$user_failed_username_count = count( $failed_logins_wrong_user );
|
||
$user_failed_pass = sprintf(
|
||
// translators: a number that is total count of unique users in a login group.
|
||
_n( '%d failed login due to a wrong username', '%d failed logins due to a wrong usernames', $user_failed_username_count, 'wp-security-audit-log' ),
|
||
$user_failed_username_count
|
||
);
|
||
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There were %1$s on your site.', 'wp-security-audit-log' ),
|
||
$user_failed_pass
|
||
);
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) ) {
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= esc_html__( 'They are from the following IP addresses:', 'wp-security-audit-log' );
|
||
$body .= '</td></tr>';
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$failed_logins_wrong_user = array_slice( $failed_logins_wrong_user, 0, $number_to_include );
|
||
$previous_ips = array();
|
||
foreach ( $failed_logins_wrong_user as $event ) {
|
||
$current_ip = $event['client_ip'];
|
||
if ( ! in_array( $current_ip, $previous_ips, true ) ) {
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;"><span style="display: inline-block; color: #009344;">' . $current_ip . '</span></td></tr>';
|
||
$previous_ips[] = $current_ip;
|
||
}
|
||
}
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
$show_free_link = true;
|
||
} else {
|
||
$filters_string = '';
|
||
foreach ( $failed_logins_wrong_user_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Failed User Logins End -->';
|
||
}
|
||
}
|
||
|
||
// Password changes.
|
||
if ( ( isset( $current_settings['notification_summary_password_changes'] ) && $current_settings['notification_summary_password_changes'] ) || ! isset( $current_settings['notification_summary_password_changes'] ) ) {
|
||
if ( true /*! empty( $password_changes ) || ! empty( $forced_password_changes )*/ ) {
|
||
|
||
$body .= '
|
||
<!-- Password Changes Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">Password Changes</td>
|
||
</tr>
|
||
';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_password_user_change_own_password'] ) && $current_settings['notification_summary_password_user_change_own_password'] ) || ! isset( $current_settings['notification_summary_password_user_change_own_password'] ) ) {
|
||
if ( true /*! empty( $password_changes ) */ ) {
|
||
$password_changes_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d password change on your site (user changed their own password)', 'were %d password changes on your site (user changed their own password)', count( $password_changes ), 'wp-security-audit-log' ),
|
||
count( $password_changes )
|
||
);
|
||
$body .= '<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$password_changes_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $password_changes ) ) {
|
||
$body .= __( 'These users changed their password:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $password_changes ) ) {
|
||
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$password_changes = array_slice( $password_changes, 0, $number_to_include );
|
||
|
||
foreach ( $password_changes as $event ) {
|
||
$user_data = ( ( isset( $event['meta_values']['TargetUserData'] ) ) ? $event['meta_values']['TargetUserData'] : false );
|
||
if ( ! $user_data ) {
|
||
continue;
|
||
}
|
||
|
||
if ( is_array( $user_data ) ) {
|
||
$user_data = (object) $user_data;
|
||
}
|
||
|
||
$body .= '
|
||
<tr>
|
||
<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= '<span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $user_data->Username ) . '</span> from <span style="display: inline-block; color: #009344;">' . $event['client_ip'] . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
$body .= '</td></tr>';
|
||
}
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $password_changes ) ) {
|
||
$filters_string = '';
|
||
foreach ( $password_changes_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table></td></tr>';
|
||
}
|
||
}
|
||
|
||
if ( ( isset( $current_settings['notification_summary_password_user_change_other_password'] ) && $current_settings['notification_summary_password_user_change_other_password'] ) || ! isset( $current_settings['notification_summary_password_user_change_other_password'] ) ) {
|
||
if ( true /* ! empty( $forced_password_changes ) */ ) {
|
||
$forced_password_changes_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d password change on your site (user changed the password of another user)', 'were %d password changes on your site (user changed the password of another user)', count( $forced_password_changes ), 'wp-security-audit-log' ),
|
||
count( $forced_password_changes )
|
||
);
|
||
|
||
$body .= '<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$forced_password_changes_string
|
||
);
|
||
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $forced_password_changes ) ) {
|
||
$body .= '
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= __( 'These users had their password changed:', 'wp-security-audit-log' );
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $forced_password_changes ) ) {
|
||
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$forced_password_changes = array_slice( $forced_password_changes, 0, $number_to_include );
|
||
foreach ( $forced_password_changes as $event ) {
|
||
$user_data = ( ( isset( $event['meta_values']['TargetUserData'] ) ) ? $event['meta_values']['TargetUserData'] : false );
|
||
if ( ! $user_data ) {
|
||
continue;
|
||
}
|
||
|
||
if ( is_array( $user_data ) ) {
|
||
$user_data = (object) $user_data;
|
||
}
|
||
|
||
$body .= '
|
||
<tr>
|
||
<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= '<span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $user_data->Username ) . '</span> — password changed by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> from <span style="display: inline-block; color: #009344;">' . $event['client_ip'] . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $forced_password_changes ) ) {
|
||
$filters_string = '';
|
||
foreach ( $forced_password_changes_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; font-weight: bold; display: inline-block;" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Password Changes End -->
|
||
';
|
||
}
|
||
}
|
||
|
||
// User profile changes.
|
||
if ( true /* ! empty( $user_profile_changes )*/ ) {
|
||
$user_profile_changes_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d profile change', 'were %d profile changes', count( $user_profile_changes ), 'wp-security-audit-log' ),
|
||
count( $user_profile_changes )
|
||
);
|
||
$body .= '<!-- User Profile Changes Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">User Profile Changes</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$user_profile_changes_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $user_profile_changes ) ) {
|
||
$body .= __( 'Below is a list of important user profile changes that happened on your website:', 'wp-security-audit-log' );
|
||
$body .= '</td></tr>
|
||
<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
// Include the loop for events only if there are user profile changes.
|
||
$user_profile_changes = array_slice( $user_profile_changes, 0, $number_to_include );
|
||
|
||
foreach ( $user_profile_changes as $event ) {
|
||
if ( 4000 === (int) $event['alert_id'] ) {
|
||
$user_data = ( ( isset( $event['meta_values']['NewUserData'] ) ) ? $event['meta_values']['NewUserData'] : false );
|
||
if ( $user_data ) {
|
||
|
||
if ( is_array( $user_data ) ) {
|
||
$user_data = (object) $user_data;
|
||
}
|
||
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $user_data->Username ) . '</span> has registered on your website from <span style="display: inline-block; color: #009344;">' . $event['client_ip'] . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
$body .= '</td></tr>';
|
||
}
|
||
} elseif ( 4001 === (int) $event['alert_id'] ) {
|
||
$user_data = ( ( isset( $event['meta_values']['NewUserData'] ) ) ? $event['meta_values']['NewUserData'] : false );
|
||
if ( $user_data ) {
|
||
|
||
if ( is_array( $user_data ) ) {
|
||
$user_data = (object) $user_data;
|
||
}
|
||
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has created the user <span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $user_data->Username ) . '</span> with the role <span style="display: inline-block; color: #009344;">' . $user_data->Roles . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
$body .= '</td></tr>';
|
||
}
|
||
} elseif ( 4002 === (int) $event['alert_id'] ) {
|
||
$username = ( ( isset( $event['meta_values']['TargetUsername'] ) ) ? $event['meta_values']['TargetUsername'] : false );
|
||
$userrole = ( ( isset( $event['meta_values']['NewRole'] ) ) ? $event['meta_values']['NewRole'] : false );
|
||
if ( $username ) {
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has changed the role of the user <span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $username ) . '</span> to <span style="display: inline-block; color: #009344;">' . $userrole . '</span>';
|
||
$body .= '</td></tr>';
|
||
}
|
||
} elseif ( 4007 === (int) $event['alert_id'] ) {
|
||
$user_data = ( ( isset( $event['meta_values']['TargetUserData'] ) ) ? $event['meta_values']['TargetUserData'] : false );
|
||
if ( $user_data ) {
|
||
|
||
if ( is_array( $user_data ) ) {
|
||
$user_data = (object) $user_data;
|
||
}
|
||
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has deleted the user <span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $user_data->Username ) . '</span> with the role <span style="display: inline-block; color: #009344;">' . $user_data->Roles . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
$body .= '</td></tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
$body .= '</table>';
|
||
}
|
||
|
||
$body .= '<div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $user_profile_changes ) ) {
|
||
$filters_string = '';
|
||
foreach ( $user_profile_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div>';
|
||
|
||
$body .= '
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- User Profile Changes End -->';
|
||
}
|
||
|
||
// Multisite activity.
|
||
// Untested!
|
||
if ( ! empty( $multisite_activity ) ) {
|
||
$multisite_activity_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d multisite activity', 'were %d multisite activities', count( $multisite_activity ), 'wp-security-audit-log' ),
|
||
count( $multisite_activity )
|
||
);
|
||
$body .= '<!-- Multisite Activity Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">Multisite Activity</td>
|
||
</tr>';
|
||
$body .= '<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$multisite_activity_string
|
||
);
|
||
$body .= '</td>
|
||
</tr>';
|
||
$body .= '<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
|
||
$body .= '</td>
|
||
</tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) ) {
|
||
$body .= '<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">Below is a list of important events that occurred on your multisite network:</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$multisite_activity = array_slice( $multisite_activity, 0, $number_to_include );
|
||
|
||
foreach ( $multisite_activity as $event ) {
|
||
$sitename = ( ( isset( $event['meta_values']['SiteName'] ) ) ? $event['meta_values']['SiteName'] : false );
|
||
if ( 7000 === (int) $event['alert_id'] ) {
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has added site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 7001 === (int) $event['alert_id'] ) {
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has archived site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 7002 === (int) $event['alert_id'] ) {
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has unarchived site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 7003 === (int) $event['alert_id'] ) {
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has activated site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 7004 === (int) $event['alert_id'] ) {
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has deactivated site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 7005 === (int) $event['alert_id'] ) {
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> has deleted site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 4010 === (int) $event['alert_id'] ) {
|
||
$username = ( ( isset( $event['meta_values']['TargetUsername'] ) ) ? $event['meta_values']['TargetUsername'] : false );
|
||
$userrole = ( ( isset( $event['meta_values']['TargetUserRole'] ) ) ? $event['meta_values']['TargetUserRole'] : false );
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> added the user <span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $username ) . '</span> to the site <span style="display: inline-block; color: #009344;">' . $sitename . '</span> with the role of <span style="display: inline-block; color: #009344;">' . $userrole . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
} elseif ( 4011 === (int) $event['alert_id'] ) {
|
||
$username = ( ( isset( $event['meta_values']['TargetUsername'] ) ) ? $event['meta_values']['TargetUsername'] : false );
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( $event['user_id'] ) ) . '</span> removed the user <span style="display: inline-block; color: #009344;">' . self::get_user_for_email( $username ) . '</span> from the site <span style="display: inline-block; color: #009344;">' . $sitename . '</span>';
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
}
|
||
}
|
||
}
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="hhttps://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} else {
|
||
$filters_string = '';
|
||
foreach ( $multisite_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Multisite Activity End -->';
|
||
}
|
||
|
||
// Plugin activity.
|
||
if ( ( isset( $current_settings['notification_summary_plugins_activity'] ) && $current_settings['notification_summary_plugins_activity'] ) || ! isset( $current_settings['notification_summary_plugins_activity'] ) ) {
|
||
if ( true /* ! empty( $plugin_activity ) */ ) {
|
||
$plugin_activity_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d plugin change', 'were %d plugin changes', count( $plugin_activity ), 'wp-security-audit-log' ),
|
||
count( $plugin_activity )
|
||
);
|
||
$body .= '<!-- Plugin Activity Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">Plugin Activity</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$plugin_activity_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $plugin_activity ) ) {
|
||
$body .= __( 'Below is a list of these events:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $plugin_activity ) ) {
|
||
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$plugin_activity = array_slice( $plugin_activity, 0, $number_to_include );
|
||
|
||
foreach ( $plugin_activity as $event ) {
|
||
$plugin_data = false;
|
||
if ( 5000 === (int) $event['alert_id'] ) {
|
||
$plugin_data = ( ( isset( $event['meta_values']['Plugin'] ) ) ? $event['meta_values']['Plugin'] : false );
|
||
} else {
|
||
$plugin_data = ( ( isset( $event['meta_values']['PluginData'] ) ) ? $event['meta_values']['PluginData'] : false );
|
||
}
|
||
|
||
if ( ! $plugin_data ) {
|
||
continue;
|
||
}
|
||
|
||
$plugin_data = (object) $plugin_data;
|
||
|
||
if ( ! ( $plugin_data instanceof \stdClass ) || ! property_exists( $plugin_data, 'Name' ) ) {
|
||
continue;
|
||
}
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
if ( 5000 === (int) $event['alert_id'] ) {
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( (int) $event['user_id'] ) ) . '</span> installed the plugin <span style="display: inline-block; color: #009344;">' . $plugin_data->Name . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
} elseif ( 5001 === (int) $event['alert_id'] ) {
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( (int) $event['user_id'] ) ) . '</span> activated the plugin <span style="display: inline-block; color: #009344;">' . $plugin_data->Name . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
} elseif ( 5002 === (int) $event['alert_id'] ) {
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( (int) $event['user_id'] ) ) . '</span> deactivated the plugin <span style="display: inline-block; color: #009344;">' . $plugin_data->Name . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
} elseif ( 5003 === (int) $event['alert_id'] ) {
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( (int) $event['user_id'] ) ) . '</span> uninstalled the plugin <span style="display: inline-block; color: #009344;">' . $plugin_data->Name . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
} elseif ( 5004 === (int) $event['alert_id'] ) {
|
||
$body .= 'User <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( (int) $event['user_id'] ) ) . '</span> upgraded the plugin <span style="display: inline-block; color: #009344;">' . $plugin_data->Name . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
}
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
$body .= '</table></td></tr>';
|
||
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $plugin_activity ) ) {
|
||
$filters_string = '';
|
||
foreach ( $plugin_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Plugin Activity End -->';
|
||
}
|
||
}
|
||
|
||
// System activity.
|
||
if ( ( isset( $current_settings['notification_summary_system_activity'] ) && $current_settings['notification_summary_system_activity'] ) || ! isset( $current_settings['notification_summary_system_activity'] ) ) {
|
||
if ( true /* ! empty( $system_activity ) */ ) {
|
||
$system_activity_count_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d system event', 'were %d system events', count( $system_activity ), 'wp-security-audit-log' ),
|
||
count( $system_activity )
|
||
);
|
||
|
||
$body .= '<!-- System Activity Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">System Activity</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$system_activity_count_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $system_activity ) ) {
|
||
$body .= __( 'Below is a list of system changes that happened:', 'wp-security-audit-log' );
|
||
}
|
||
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $system_activity ) ) {
|
||
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$system_activity = array_slice( $system_activity, 0, $number_to_include );
|
||
|
||
foreach ( $system_activity as $event ) {
|
||
$plugin_data = false;
|
||
if ( ( isset( $event['meta_values']['Plugin'] ) ) ) {
|
||
$plugin_data = $event['meta_values']['Plugin'];
|
||
} elseif ( ( isset( $event['meta_values']['PluginData'] ) ) ) {
|
||
$plugin_data = $event['meta_values']['PluginData'];
|
||
}
|
||
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
|
||
$body .= Alert_Manager::get_alerts()[ $event['alert_id'] ]['desc'];
|
||
|
||
$user = ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : ( ( ! is_null( $event['username'] ) ) ? self::get_user_name( (int) $event['user_id'] ) : null ) );
|
||
|
||
if ( $user ) {
|
||
$body .= ' by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $event['username'] ) ? self::get_user_for_email( $event['username'] ) : self::get_user_name( (int) $event['user_id'] ) ) . '</span>';
|
||
}
|
||
|
||
if ( $plugin_data ) {
|
||
$body .= ' plugin <span style="display: inline-block; color: #009344;">' . $plugin_data->Name . '</span>'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
||
}
|
||
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
$body .= '</table></td></tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $system_activity ) ) {
|
||
$filters_string = '';
|
||
foreach ( $system_activity_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- System Activity End -->';
|
||
}
|
||
}
|
||
}
|
||
|
||
// Content changes.
|
||
if ( ( isset( $current_settings['notification_summary_content_changes'] ) && $current_settings['notification_summary_content_changes'] ) || ! isset( $current_settings['notification_summary_content_changes'] ) ) {
|
||
if ( true /*
|
||
! empty( $posts_published )
|
||
|| ! empty( $posts_trashed )
|
||
|| ! empty( $posts_deleted )
|
||
|| ! empty( $posts_modified )
|
||
|| ! empty( $posts_status_changed )
|
||
*/
|
||
) {
|
||
$body .= '<!-- Content Changes Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">Content Changes</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
|
||
// Posts Published.
|
||
if ( ( isset( $current_settings['notification_summary_published_posts'] ) && $current_settings['notification_summary_published_posts'] ) || ! isset( $current_settings['notification_summary_published_posts'] ) ) {
|
||
if ( true /* ! empty( $posts_published ) */ ) {
|
||
$posts_published_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d post published', 'were %d posts published', count( $posts_published ), 'wp-security-audit-log' ),
|
||
count( $posts_published )
|
||
);
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$posts_published_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ( ! empty( $posts_published )
|
||
|| ! empty( $posts_trashed )
|
||
|| ! empty( $posts_deleted )
|
||
|| ! empty( $posts_modified )
|
||
|| ! empty( $posts_status_changed ) ) ) {
|
||
$body .= __( 'These posts were published:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ( ! empty( $posts_published )
|
||
|| ! empty( $posts_trashed )
|
||
|| ! empty( $posts_deleted )
|
||
|| ! empty( $posts_modified )
|
||
|| ! empty( $posts_status_changed ) ) ) {
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$posts_published = array_slice( $posts_published, 0, $number_to_include );
|
||
|
||
foreach ( $posts_published as $post_event ) {
|
||
$post_title = ( ( isset( $post_event['meta_values']['PostTitle'] ) ) ? $post_event['meta_values']['PostTitle'] : false );
|
||
$post_id = ( ( isset( $post_event['meta_values']['PostID'] ) ) ? $post_event['meta_values']['PostID'] : false );
|
||
if ( ! $post_title || ! $post_id ) {
|
||
continue;
|
||
}
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
if ( WP_Helper::is_multisite() ) {
|
||
$site_url = ( ( isset( $post_event['meta_values']['SiteURL'] ) ) ? $post_event['meta_values']['SiteURL'] : $safe_url );
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span> on site <span style="display: inline-block; color: #009344;">' . $site_url . '</span>';
|
||
} else {
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span>';
|
||
}
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $posts_published )
|
||
|| ! empty( $posts_trashed )
|
||
|| ! empty( $posts_deleted )
|
||
|| ! empty( $posts_modified )
|
||
|| ! empty( $posts_status_changed ) ) {
|
||
$filters_string = '';
|
||
foreach ( $posts_published_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
// Posts Trashed.
|
||
if ( ( isset( $current_settings['notification_summary_deleted_posts'] ) && $current_settings['notification_summary_deleted_posts'] ) || ! isset( $current_settings['notification_summary_deleted_posts'] ) ) {
|
||
if ( true /*! empty( $posts_trashed )*/ ) {
|
||
$posts_trashed_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d post trashed', 'were %d posts trashed', count( $posts_trashed ), 'wp-security-audit-log' ),
|
||
count( $posts_trashed )
|
||
);
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$posts_trashed_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_trashed ) ) {
|
||
$body .= __( 'These posts were moved to trash:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_trashed ) ) {
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$posts_trashed = array_slice( $posts_trashed, 0, $number_to_include );
|
||
|
||
foreach ( $posts_trashed as $post_event ) {
|
||
$post_title = ( ( isset( $post_event['meta_values']['PostTitle'] ) ) ? $post_event['meta_values']['PostTitle'] : false );
|
||
$post_id = ( ( isset( $post_event['meta_values']['PostID'] ) ) ? $post_event['meta_values']['PostID'] : false );
|
||
if ( ! $post_title || ! $post_id ) {
|
||
continue;
|
||
}
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
if ( WP_Helper::is_multisite() ) {
|
||
$site_url = ( ( isset( $post_event['meta_values']['SiteURL'] ) ) ? $post_event['meta_values']['SiteURL'] : $safe_url );
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> sent to trash by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span> on site <span style="display: inline-block; color: #009344;">' . $site_url . '</span>';
|
||
} else {
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> sent to trash by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span>';
|
||
}
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $posts_trashed ) ) {
|
||
$filters_string = '';
|
||
foreach ( $posts_trashed_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
// Posts Deleted.
|
||
if ( ( isset( $current_settings['notification_summary_deleted_posts'] ) && $current_settings['notification_summary_deleted_posts'] ) || ! isset( $current_settings['notification_summary_deleted_posts'] ) ) {
|
||
if ( true /*! empty( $posts_deleted )*/ ) {
|
||
$posts_deleted_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d post deleted', 'were %d posts deleted', count( $posts_deleted ), 'wp-security-audit-log' ),
|
||
count( $posts_deleted )
|
||
);
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$posts_deleted_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_deleted ) ) {
|
||
$body .= __( 'These posts were deleted:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_deleted ) ) {
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$posts_deleted = array_slice( $posts_deleted, 0, $number_to_include );
|
||
|
||
foreach ( $posts_deleted as $post_event ) {
|
||
$post_title = ( ( isset( $post_event['meta_values']['PostTitle'] ) ) ? $post_event['meta_values']['PostTitle'] : false );
|
||
$post_id = ( ( isset( $post_event['meta_values']['PostID'] ) ) ? $post_event['meta_values']['PostID'] : false );
|
||
if ( ! $post_title || ! $post_id ) {
|
||
continue;
|
||
}
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
if ( WP_Helper::is_multisite() ) {
|
||
$site_url = ( ( isset( $post_event['meta_values']['SiteURL'] ) ) ? $post_event['meta_values']['SiteURL'] : $safe_url );
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> deleted permanently by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span> on site <span style="display: inline-block; color: #009344;">' . $site_url . '</span>';
|
||
} else {
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> deleted permanently by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span>';
|
||
}
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $posts_deleted ) ) {
|
||
$filters_string = '';
|
||
foreach ( $posts_deleted_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
// Posts Modified.
|
||
if ( ( isset( $current_settings['notification_summary_changed_posts'] ) && $current_settings['notification_summary_changed_posts'] ) || ! isset( $current_settings['notification_summary_changed_posts'] ) ) {
|
||
if ( true /*! empty( $posts_modified )*/ ) {
|
||
$posts_modified_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d post modified', 'were %d posts modified', count( $posts_modified ), 'wp-security-audit-log' ),
|
||
count( $posts_modified )
|
||
);
|
||
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$posts_modified_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_modified ) ) {
|
||
$body .= __( 'The content of these posts was changed:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_modified ) ) {
|
||
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$posts_modified = array_slice( $posts_modified, 0, $number_to_include );
|
||
|
||
foreach ( $posts_modified as $post_event ) {
|
||
$post_title = ( ( isset( $post_event['meta_values']['PostTitle'] ) ) ? $post_event['meta_values']['PostTitle'] : false );
|
||
if ( ! $post_title ) {
|
||
continue;
|
||
}
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
if ( WP_Helper::is_multisite() ) {
|
||
$site_url = ( ( isset( $post_event['meta_values']['SiteURL'] ) ) ? $post_event['meta_values']['SiteURL'] : $safe_url );
|
||
$body .= '<span style="display: inline-block; color: #009344;">' . $post_title . '</span> by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span> on site <span style="color: #1A3060;">' . $site_url . '</span>'; // Changed color for 'on site'.
|
||
} else {
|
||
$body .= '<span style="display: inline-block; color: #009344;">' . $post_title . '</span> by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span>';
|
||
}
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $posts_modified ) ) {
|
||
$filters_string = '';
|
||
foreach ( $posts_modified_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
// Posts Status Changed.
|
||
if ( ( isset( $current_settings['notification_summary_status_changed_posts'] ) && $current_settings['notification_summary_status_changed_posts'] ) || ! isset( $current_settings['notification_summary_status_changed_posts'] ) ) {
|
||
if ( true /*! empty( $posts_status_changed )*/ ) {
|
||
$posts_status_changed_string = sprintf(
|
||
// translators: singular or plural form of a login total count.
|
||
_n( 'was %d post status changed', 'were %d posts status changes', count( $posts_status_changed ), 'wp-security-audit-log' ),
|
||
count( $posts_status_changed )
|
||
);
|
||
$body .= '<tr><td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">';
|
||
$body .= sprintf(
|
||
/* Translators: 1 - number of logins. 2 - total unique users */
|
||
__( 'There %1$s on your site.', 'wp-security-audit-log' ),
|
||
$posts_status_changed_string
|
||
);
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_status_changed ) ) {
|
||
$body .= __( 'These posts were with status changes:', 'wp-security-audit-log' );
|
||
}
|
||
$body .= '</td></tr>';
|
||
|
||
if ( ( isset( $current_settings['notification_summary_number_of_events_included'] ) && $current_settings['notification_summary_number_of_events_included'] ) && ! empty( $posts_status_changed ) ) {
|
||
$body .= '<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
$posts_status_changed = array_slice( $posts_status_changed, 0, $number_to_include );
|
||
|
||
foreach ( $posts_status_changed as $post_event ) {
|
||
$post_title = ( ( isset( $post_event['meta_values']['PostTitle'] ) ) ? $post_event['meta_values']['PostTitle'] : false );
|
||
$post_id = ( ( isset( $post_event['meta_values']['PostID'] ) ) ? $post_event['meta_values']['PostID'] : false );
|
||
if ( ! $post_title || ! $post_id ) {
|
||
continue;
|
||
}
|
||
|
||
$body .= '<tr>';
|
||
$body .= '<td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
if ( WP_Helper::is_multisite() ) {
|
||
$site_url = ( ( isset( $post_event['meta_values']['SiteURL'] ) ) ? $post_event['meta_values']['SiteURL'] : $safe_url );
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span> on site <span style="display: inline-block; color: #009344;">' . $site_url . '</span>';
|
||
} else {
|
||
$body .= '<a style="display: inline-block; color: #009344;" href="' . get_permalink( $post_id ) . '" target="_blank">' . $post_title . '</a> by <span style="display: inline-block; color: #009344;">' . ( ! is_null( $post_event['username'] ) ? self::get_user_for_email( $post_event['username'] ) : self::get_user_name( $post_event['user_id'] ) ) . '</span>';
|
||
}
|
||
$body .= '</td>';
|
||
$body .= '</tr>';
|
||
}
|
||
|
||
$body .= '<tr><td align="center"><div>';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// $body .= '<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=email&utm_campaign=product_email&utm_content=cta_main" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>';
|
||
|
||
$show_free_link = true;
|
||
} elseif ( ! empty( $posts_status_changed ) ) {
|
||
$filters_string = '';
|
||
foreach ( $posts_status_changed_events as $key => $event_id ) {
|
||
$filters_string .= '&filters%5B' . $key . '%5D=event%3A' . $event_id;
|
||
}
|
||
|
||
if ( $report_wsal_end_date ) {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=from%3A' . $report_wsal_start_date;
|
||
$filters_string .= '&filters%5B' . ( $key + 3 ) . '%5D=to%3A' . $report_wsal_end_date;
|
||
} else {
|
||
$filters_string .= '&filters%5B' . ( $key + 1 ) . '%5D=on%3A' . $report_wsal_start_date;
|
||
}
|
||
$body .= '<a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '&wsal-cbid=-1' . $filters_string . '" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Show me all these events', 'wp-security-audit-log' ) . '</a>';
|
||
}
|
||
|
||
$body .= '</div></td></tr>';
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
}
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Content Changes End -->';
|
||
}
|
||
}
|
||
|
||
$body = apply_filters( 'wsal_append_dailynotification_email_content', $body, $events );
|
||
|
||
// File changes.
|
||
if ( true /*! empty( $files_added ) || ! empty( $files_modified ) || ! empty( $files_deleted ) */ ) {
|
||
$body .= '<!-- File Changes Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="font-family: \'Quicksand\',\'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: bold; font-size: 20px; line-height: 22px; color: #1A3060; text-align: left; padding-top: 24px; padding-bottom: 8px;">File Changes</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; text-align: left;">Below are the changes to files on your website:</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 40px;">
|
||
<table class="zebra-striped" width="100%" cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #D9E4FD; border-radius: 2px;">';
|
||
|
||
if ( true /* ! empty( $files_added ) */ ) {
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'Files added: <span style="display: inline-block; color: #009344;">' . count( $files_added ) . '</span>';
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
if ( true /* ! empty( $files_modified ) */ ) {
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'Files modified: <span style="display: inline-block; color: #009344;">' . count( $files_modified ) . '</span>';
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
if ( true /* ! empty( $files_deleted ) */ ) {
|
||
$body .= '<tr><td style="border: 1px solid #D9E4FD; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #1A3060; padding-left: 24px; padding-right: 24px; padding-top: 10px; padding-bottom: 10px;">';
|
||
$body .= 'Files deleted: <span style="display: inline-block; color: #009344;">' . count( $files_deleted ) . '</span>';
|
||
$body .= '</td></tr>';
|
||
}
|
||
|
||
$body .= '</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- File Changes End -->';
|
||
}
|
||
}
|
||
|
||
if ( true === $show_free_link ) {
|
||
$body .= '<!-- Total Events Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<a href="https://melapress.com/wordpress-activity-log/pricing/#utm_source=wpal_email&utm_medium=free_email&utm_campaign=events-upgrade-text" target="_blank" style="color: #009344; display: inline-block;">' . __( 'Upgrade to Premium to see these events specifically', 'wp-security-audit-log' ) . '</a>
|
||
</td>
|
||
</tr>
|
||
</table>';
|
||
}
|
||
|
||
// Total events.
|
||
$body .= '<!-- Total Events Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 20px;">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border: none; border-radius: 4px;">
|
||
<tr>
|
||
<td style="border: 2px solid #BDD63A; border-radius: 4px; background: #E5EFB0; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #384A2F; padding-left: 24px; padding-right: 24px; padding-top: 20px; padding-bottom: 20px;">This email is only a summary of ' . $total_events . ' events recorded in your website\'s activity log ' . ( ( $report_wsal_end_date ) ? ' last week' : 'yesterday' ) . '. For a comprehensive overview and detailed insights into the activities on your website, please visit the <a href="' . \WpSecurityAuditLog::get_plugin_admin_url_page() . '" target="_blank" style="color: #384A2F; font-weight: bold; display: inline-block;">activity log page</a></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Total Events End -->';
|
||
|
||
if ( 'free' === \WpSecurityAuditLog::get_plugin_version() ) {
|
||
// Soft CTA.
|
||
// This should only appear on the free version of the plugin.
|
||
|
||
$body .= '<!-- Soft CTA Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td style="padding-top: 20px; padding-bottom: 20px;">
|
||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border: none; border-radius: 4px;">
|
||
<tr>
|
||
<td style="border: 2px solid #D9E4FD; border-radius: 4px; background: #F0F4FE; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-weight: normal; font-size: 18px; line-height: 24px; color: #485D89; padding-left: 24px; padding-right: 24px; padding-top: 20px; padding-bottom: 20px;"><span style="font-weight: bold;">Elevate your security:</span> Access advanced insights, real-time monitoring, and instant alerts for an enhanced WordPress management experience. <br><a href="https://melapress.com/wordpress-activity-log/#utm_source=wpal_email&utm_medium=free_email&utm_campaign=learn-more-button-cta" target="_blank" style="text-decoration:none; color: #485D89; font-weight: bold; line-height: 28px; font-size: 16px; display: inline-block; margin-top: 6px; margin-bottom: 4px; background-color: #B9CCF7; border-radius: 3px; padding-left: 12px; padding-right: 12px; padding-top: 3px; padding-bottom: 3px;">LEARN MORE ⇨</a></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Soft CTA End -->';
|
||
}
|
||
|
||
// Documentation & Get Support.
|
||
$body .= '<!-- Documentation & Get Support Start -->
|
||
<table role="presentation" width="640" border="0" cellpadding="0" cellspacing="0" role="presentation" class="responsive">
|
||
<tr>
|
||
<td align="center" style="padding-bottom:80px;" class="inner-td">
|
||
|
||
<!-- Two Columns Start -->
|
||
<table role="presentation" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||
<tr>
|
||
<td align="center" valign="top" width="370" class="responsive-stack" style="padding-top:60px;">
|
||
|
||
<!-- Documentation Start -->
|
||
<table role="presentation" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||
<tr>
|
||
<td align="center" style="padding-bottom: 25px;" class="responsive-image">
|
||
<img src="' . $media['documentation'] . '" width="99" height="117" border="0" style="display: block;" alt="" >
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" style="font-family: \'Quicksand\', \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:24px;line-height:28px;color:#1A3060;font-weight: 700; padding:0px 10px 15px;" class="mob-body-text" >
|
||
Documentation
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:18px;line-height:24px;color:#1A3060;font-weight: 400; padding:0px 10px 25px;" class="mob-body-text" >
|
||
Refer to our <a style="color: #009344;" href="https://melapress.com/support/kb/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=kb-link">knowledge base</a> for plugin documentation
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Documentation End -->
|
||
|
||
</td>
|
||
<td style="font-size:1px; line-height: 1px;" width="60" class="hide"> </td>
|
||
<td align="center" valign="top" width="370" class="responsive-stack" style="padding-top:60px;">
|
||
|
||
<!-- Get Support Start -->
|
||
<table role="presentation" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||
<tr>
|
||
<td align="center" style="padding-bottom: 25px;" class="responsive-image">
|
||
<img src="' . $media['support'] . '" width="120" height="117" border="0" style="display: block;" alt="" >
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" style="font-family: \'Quicksand\', \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:24px;line-height:28px;color:#1A3060;font-weight: 700; padding:0px 10px 15px;" class="mob-body-text" >
|
||
Get Support
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size:18px;line-height:24px;color:#1A3060;font-weight: 400; padding:0px 10px 25px;" class="mob-body-text" >
|
||
Need help? Email us on <a style="color: #009344;" href="mailto:info@melapress.com">info@melapress.com</a>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Get Support End -->
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Two Columns Start -->
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Documentation & Get Support End -->';
|
||
|
||
// Footer.
|
||
$body .= '<!-- Footer Start -->
|
||
<table role="presentation" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" bgcolor="#384A2F" style="min-width: 100%; background-image: url(' . $media['wsal-dg-footer-bg'] . '); background-repeat: no-repeat; background-position: top center; background-position-y: -1px;">
|
||
<tr>
|
||
<td width="100%" align="center" style="padding: 105px 0 16px 0;">
|
||
<a href="https://melapress.com/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=logo-footer" target="_blank"><img src="' . $media['melapress-icon'] . '" width="42" height="42" border="0" style="display: block;" alt="Melapress"/></a>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size: 16px; line-height: 22px; color: #ffffff; padding-top: 25px;" class="footer-text">
|
||
If you\'re finding WP Activity Log helpful, consider trying our other plugins:<br> <a href=" https://melapress.com/wordpress-2fa/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=wp2fa-text-footer" target="_blank" style="color:#ffffff;">WP 2FA</a> and <a href="https://melapress.com/wordpress-login-security/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=mls-text-footer" target="_blank" style="color:#ffffff;">Melapress Login Security</a>.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width="100%" align="center" style="padding: 16px 0 16px;">
|
||
<table role="presentation" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||
<tr>
|
||
<td align="center" style="font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; font-size: 13px; line-height: 22px; color: #E5EFB0; padding-top: 25px;" class="footer-text">
|
||
This email is generated by WP Activity Log. To disable this daily overview navigate to the <a href="' . \add_query_arg( 'page', 'wsal-notifications', \network_admin_url( 'admin.php' ) ) . '#wsal-options-tab-notifications-highlights" target="_blank" style="color: #E5EFB0;">email notifications settings</a><br><br>
|
||
<a href="https://melapress.com/wordpress-activity-log/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=wpal-text-footer" target="_blank" style="color: #E5EFB0;">WP Activity Log</a> is developed and maintained by <a href="https://melapress.com/#utm_source=wpal_email&utm_medium=' . $set_link . '_email&utm_campaign=melapress-text-footer" target="_blank" style="color: #E5EFB0;">Melapress</a>.<br><span style="white-space: nowrap;">Melapress Blaak 520 Rotterdam,</span> <span style="white-space: nowrap;">Zuid-Holland 3011 TA Netherlands</span>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- Footer End -->';
|
||
|
||
return $header . $body . $footer;
|
||
}
|
||
|
||
/**
|
||
* Get User Details for Email.
|
||
*
|
||
* Get Username/First Name/Last Name/Public Name to display in the emails.
|
||
*
|
||
* @param string $username – Username.
|
||
*
|
||
* @return string
|
||
*
|
||
* @since 5.2.2
|
||
*/
|
||
private static function get_user_for_email( $username ) {
|
||
if ( 'username' === Plugin_Settings_Helper::get_type_username() ) {
|
||
return $username;
|
||
} else {
|
||
// Check if user details are already set.
|
||
if ( isset( self::$user_data[ $username ] ) && ! empty( self::$user_data[ $username ] ) ) {
|
||
$user = self::$user_data[ $username ];
|
||
} else {
|
||
// If not set, then get user details.
|
||
$user = get_user_by( 'login', $username );
|
||
|
||
// Set user details.
|
||
self::$user_data[ $username ] = $user;
|
||
}
|
||
|
||
// Type of detail to display.
|
||
$display_name = '';
|
||
|
||
if ( $user ) {
|
||
// Check for the type of name to display.
|
||
if ( 'display_name' === Plugin_Settings_Helper::get_type_username() && ! empty( $user->display_name ) ) {
|
||
$display_name = $user->display_name;
|
||
} elseif ( 'first_last_name' === Plugin_Settings_Helper::get_type_username() && ( ! empty( $user->first_name ) || ! empty( $user->last_name ) ) ) {
|
||
$display_name = $user->first_name . ' ' . $user->last_name;
|
||
} else {
|
||
$display_name = $user->user_login;
|
||
}
|
||
} else {
|
||
$display_name = $username;
|
||
}
|
||
|
||
return ( null !== $display_name ) ? $display_name : esc_html__( 'System', 'wp-security-audit-log' );
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Get User Details.
|
||
*
|
||
* Get Username/First Name/Last Name/Public Name to display in the emails.
|
||
*
|
||
* @param string $user_id – The user ID.
|
||
*
|
||
* @return string
|
||
*
|
||
* @since 5.2.2
|
||
*/
|
||
private static function get_user_name( $user_id ) {
|
||
if ( null === $user_id ) {
|
||
return \esc_html__( 'System', 'wp-security-audit-log' );
|
||
}
|
||
$user = User_Helper::get_user_object( $user_id );
|
||
if ( 'username' === Plugin_Settings_Helper::get_type_username() ) {
|
||
return $user->user_login;
|
||
} else {
|
||
// Type of detail to display.
|
||
$display_name = '';
|
||
|
||
if ( $user ) {
|
||
// Check for the type of name to display.
|
||
if ( 'display_name' === Plugin_Settings_Helper::get_type_username() && ! empty( $user->display_name ) ) {
|
||
$display_name = $user->display_name;
|
||
} elseif ( 'first_last_name' === Plugin_Settings_Helper::get_type_username() && ( ! empty( $user->first_name ) || ! empty( $user->last_name ) ) ) {
|
||
$display_name = $user->first_name . ' ' . $user->last_name;
|
||
} else {
|
||
$display_name = $user->user_login;
|
||
}
|
||
} else {
|
||
$display_name = null;
|
||
}
|
||
|
||
return ( null !== $display_name ) ? $display_name : esc_html__( 'System', 'wp-security-audit-log' );
|
||
}
|
||
}
|
||
}
|
||
}
|