<?php
if(!defined('ABSPATH')){
die('HACKING ATTEMPT!');
}
// defining function
function gosmtp_cal_percentage($num_amount, $num_total) {
if($num_total == 0){
return '0%';
}
$count = ($num_amount / $num_total) * 100;
$count = number_format($count, 0);
return $count.'%';
}
// Weekly Report HTML
function gosmtp_send_email_reports($send_email = false){
global $gosmtp;
if(!($gosmtp->options['weekly_reports']['timestamp'] <= time()) && $send_email){
return;
}
if(!function_exists('gosmtp_group_by')){
include_once GOSMTP_PRO_DIR .'/main/email-reports.php';
}
$logger = new GOSMTP\Logger();
$week = $gosmtp->options['weekly_reports']['weekday'];
$last_week = date("Y-m-d", strtotime('last '.$week, strtotime('tomorrow')));
$start = date('Y-m-d', strtotime($last_week. ' -7 days'));
$end = $last_week;
$multiselect = array('subject');
$options = array(
'interval' => array(
'start' => $start,
'end' => $end
),
'pagination' => false,
);
$email_logs = $logger->get_logs('records', '', $options);
$mails = gosmtp_group_by($email_logs, array(), $multiselect);
$sent = $failed = $total = 0;
foreach($mails as $key =>$val){
$sent = $sent + $val['total']['sent'];
$failed = $failed + $val['total']['failed'];
$total = $total + $val['total']['total'];
}
echo'<div style="padding:0px 180px">"';
$email = '<html>
<head>
<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8""/>
<meta name=""viewport"" content=""width=device-width, initial-scale=1.0""/>
<!--[if !mso]><!-->
<meta http-equiv=""X-UA-Compatible"" content=""IE=edge""/>
<!--<![endif]-->
<meta name=""color-scheme"" content=""light dark"">
<meta name=""supported-color-schemes"" content=""light dark"">
<title>GOSMTP Weekly Email Summary</title>
<style type=""text/css"">
/* General styles. */
*{
box-sizing: border-box;
}
@media only screen and (max-width: 600px) {
.total-container div h4{
font-size:13px;
}
.total-container div h1{
font-size:15px;
}
.total-container div h1{
font-size:15px;
}
.total-container{
border:1px solid #bdbdbd;
}
.total-container div{
border: none !important;
padding: 5px 3px !important;
margin:0px !important;
border-radius:5px
}
.total-container div .mail-icon *{
width:25px !important;
}
.inner-table{
padding:10px !important;
width:100% !important;
}
.outer-table{
padding:20px;
}
.list_mail div{
padding:5px 3px !important;
}
.inner-table{
border-spacing:10px !important;
}
td{
padding:5px!important;
}
}
}
</style>
</head>
<body>
<table style="width:100%; background:#f1f1f1; padding:50px 0px" class="outer-table">
<tr style="text-align: center;"><td><img src="https://gosmtp.net/sitepad-data/uploads/2023/02/gosmtp-text.png" style="width:250px;text-align: center;"></td></tr>
<tr><td>
<table class="inner-table" style="background:white;border-radius:5px;width:70%; padding:30px; table-layout: fixed !important;border-spacing:20px;border: 1px solid #dcdcdc; margin: 20px auto;border:1px solid #bdbdbd;" >
<tr>
<td colspan="3">
<h3>Hi there,</h3>
</td>
</tr>
<tr>
<td colspan="3">
<b>Let\'s take a look at how your emails performed over the last week.</b>
</td>
</tr>
<tr >
<td colspan="3" style="text-align:center">
<div class="total-container">
<div style="box-sizing: border-box; padding:20px; height:100%; width:30%; text-align: center; border-radius:5px; display:inline-block; margin:2% 1%;border:1px solid #bdbdbd;">
<div class="mail-icon" style=" font-size:40px; color:#454545; width:100%; margin:5px 0px;">✉</div>
<h4 style="color:#454545;margin:5px 0px;">Total Emails</h4>
<h1 style="margin:5px 0px;">'.$total.'</h1>
<h2 style="color:#454545;margin:5px 0px;" > ▲'.gosmtp_cal_percentage($total, $total).'</h2>
</div>
<div style="box-sizing: border-box; padding:20px; height:100%; width:30%; text-align: center; border-radius:5px;display:inline-block;margin:2% 1%;border:1px solid #bdbdbd;">
<div class="mail-icon" style="font-size:40px; color:#228b22 !important; width:100%;margin:5px 0px;">✔</div>
<h4 style="color:#228b22 ;margin:5px 0px;">Sent</h4>
<h1 style="margin:5px 0px;">'.$sent.'</h1>
<h2 style="color:#228b22 ;margin:5px 0px;"> ▲'.gosmtp_cal_percentage($sent, $total).'</h2>
</div>
<div style="box-sizing: border-box; padding:20px; height:100%; width:30%; text-align: center; border-radius:5px; display:inline-block;margin:2% 1%;border:1px solid #bdbdbd;">
<div class="mail-icon" style="font-size:40px; color:red; width:100%;margin:5px 0px;">✖</div>
<h4 style="color:red;margin:5px 0px;">Failed</h4>
<h1 style="margin:5px 0px;">'.$failed.'</h1>
<h2 style="color:red;margin:5px 0px;"> ▼'.gosmtp_cal_percentage($failed, $total).'</h2>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<h2>Last Weeks Emails</h2>
</td>
<td colspan="1" style="text-align:right">
<a href="'.admin_url().'/admin.php?page=email_reports&date=custom_date&start-date='.$start.'&end-date='.$end.'">View all Emails</a>
</td>
</tr>
<tr>
<td colspan="3">
<hr>
</td>
</tr>';
if(!empty($mails)){
foreach($mails as $key => $val){
$email .= "<tr><td colspan='3' ><b>".$val['total']['subject']."</b></td></tr>
<tr style='background:#f1f1f1;'>
<td colspan='3'class='list_mail'>
<div style='padding:7px; display:inline-block; width:32%; box-sizing:border-box;'><span style='color:#454545;font-weight:bold;font-size:16px;margin-right:5px;'>✉</span>".$val['total']['total']."</div>
<div style='padding:7px; display:inline-block; width:32%; box-sizing:border-box;'><span style='color:#228b22; font-weight:bold;font: size 16px;margin-right:5px;'>✔</span>".$val['total']['sent']."(".gosmtp_cal_percentage($val['total']['sent'], $val['total']['total']).")"."</div>
<div style='padding:7px; display:inline-block; width:32%; box-sizing:border-box;'><span style='color:red;font-weight:bold;font-size:16px;margin-right:5px;'>✖</span>".$val['total']['failed']."(".gosmtp_cal_percentage($val['total']['failed'], $val['total']['total']).")"."</div>
</td>
</tr>";
// Print Only 5 Rows
if($key == 4){
break;
}
}
}else{
$email .="<tr >
<td colspan='3' style='text-align:center'>
<h4>Email Records were not found this week!</h4>
</td>
</tr>";
}
$email .='</table></td></tr></table>
</body>
</html>';
if($send_email || isset($_GET['test_reports'])){
$headers = array( 'Content-Type: text/html; charset=UTF-8' );
$admin_email = get_option('admin_email');
if(!empty($admin_email)){
$title = 'Weekly Report';
if(wp_mail($admin_email, $title, $email, $headers)){
echo '<div class="updated notice is-dismissible">
<p>'.__('Email Sent successfully to ').' <a href="mailto:'.$admin_email.'">'.$admin_email.'</a>.</p>
</div>
<div class="updated notice is-dismissible">
<p>'.__('Weekly email reports were sent from: '.$start.' to: '.$end.'').' </p>
</div>';
}else{
echo '<div class="error notice is-dismissible">
<p>'.__('Failed to send email to ').' <a href="mailto:'.$admin_email.'">'.__($admin_email).'</a>'.__('. Plesae check ').'<a href="'.admin_url('admin.php?page=gosmtp-logs').'">'. __(' Email logs ').'</a>'.__('for more info.').'</p>
</div>';
}
}else{
echo "<script>alert('Admin email has not yet been set up. Please first configure the admin email.')</script>";
}
}
// Update Timestamp
if($send_email){
$gosmtp->options['weekly_reports']['timestamp'] = strtotime("next ".$gosmtp->options['weekly_reports']['weekday']);
update_option( 'gosmtp_options', $gosmtp->options );
return;
}
$email.= '<form style="text-align:center">
<input type="hidden" name="page" value="weekly_email_reports">
<input type="submit" name="test_reports" value = "Send Test Weekly Reports" style="background:var(--blue);color:var(--white);padding:9px 10px;border:none;border-radius:3px;">
<p>'. __('Note: Test weekly report will be sent to admin email') .'</p>
</form></div>';
echo $email;
}
?>