• File: weekly_email_reports.php
  • Full Path: /home/blwgracecity/jesusexp.org/wp-content/plugins/gosmtp-pro/main/weekly_email_reports.php
  • File size: 8.29 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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;">&#9993;</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;" > &#9650;'.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;">&#10004;</div>
				<h4 style="color:#228b22 ;margin:5px 0px;">Sent</h4>
				<h1 style="margin:5px 0px;">'.$sent.'</h1>
				<h2 style="color:#228b22 ;margin:5px 0px;"> &#9650;'.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;">&#10006;</div>
				<h4 style="color:red;margin:5px 0px;">Failed</h4>
				<h1 style="margin:5px 0px;">'.$failed.'</h1>
				<h2 style="color:red;margin:5px 0px;"> &#9660;'.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;'>&#9993;</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;'>&#10004;</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;'>&#10006;</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;
}

?>