File "stats.php"
Full Path: /home/apmablcosr/www/wp-content/plugins/send-emails-with-mandrill/stats.php
File size: 12.32 KB
MIME-type: text/x-php
Charset: utf-8
<?php if (!current_user_can('manage_options')) wp_die( __('You do not have sufficient permissions to access this page.') ); ?>
<?php wpMandrill::getConnected(); ?>
<div class="wrap">
<div class="icon32" style="background: url('<?php echo plugins_url('images/mandrill-head-icon.png',__FILE__); ?>');"><br /></div>
<h2><?php _e('Mandrill Service Report', 'wpmandrill'); ?></h2><?php
$stats = self::getCurrentStats();
if ( empty($stats) ) {
echo '<p>' . __('There was a problem retrieving statistics.', 'wpmandrill') . '</p>';
echo '</div>';
return;
}
$delivered = $stats['general']['stats']['sent'] -
$stats['general']['stats']['hard_bounces'] -
$stats['general']['stats']['soft_bounces'] -
$stats['general']['stats']['rejects'];
$lit = array();
$lit['hourly']['title'] = __('Hourly Sending Volume and Open/Click Rate','wpmandrill');
$lit['hourly']['Xtitle'] = __('Hours','wpmandrill');
$lit['hourly']['tooltip'] = __('Hour','wpmandrill');
$lit['daily']['title'] = __('Daily Sending Volume and Open/Click Rate','wpmandrill');
$lit['daily']['Xtitle'] = __('Days','wpmandrill');
$lit['daily']['tooltip'] = __('Day','wpmandrill');
$lit['subtitle'] = __('in the last 30 days','wpmandrill');
$lit['Ytitle'] = __('Open & Click Rate','wpmandrill');
$lit['SerieName'] = __('Volume','wpmandrill');
$lit['emails'] = __('emails','wpmandrill');
$lit['openrate'] = __('Open Rate','wpmandrill');
$lit['clickrate'] = __('Click Rate','wpmandrill');
?>
<div id="alltime_report">
<h3><?php echo sprintf(__('All-time statistics since %s: ', 'wpmandrill'),date('m/d/Y',strtotime($stats['general']['created_at']))); ?></h3>
<hr />
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="POST">
<input name="action" value="sewm_fetch_new" type="hidden" />
<?php submit_button('Fetch new data'); ?>
<h5 style="margin-top:0px;">Note: Fetching new data can take a long time</h5>
</form>
<hr />
<div id="alltime_report_canvas">
<div class="stat_box"><?php _e('Reputation:', 'wpmandrill'); ?><br/><span><?php echo $stats['general']['reputation']?>%</span></div>
<div class="stat_box"><?php _e('Quota:', 'wpmandrill'); ?><br/><span><?php echo $stats['general']['hourly_quota']?> <?php _e('sends/hour', 'wpmandrill'); ?></span></div>
<div class="stat_box"><?php _e('Emails sent:', 'wpmandrill'); ?><br/><span><?php echo $stats['general']['stats']['sent']?></span></div>
<div class="stat_box"><?php _e('Emails delivered:', 'wpmandrill'); ?><br/><span><?php echo $delivered?> (<?php echo number_format( $delivered*100 / ( ($stats['general']['stats']['sent'])?$stats['general']['stats']['sent']:1 ) ,2); ?>%)</span></div>
<div class="stat_box"><?php _e('Tracked opens:', 'wpmandrill'); ?><br/><span><?php echo $stats['general']['stats']['opens']?></span></div>
<div class="stat_box"><?php _e('Tracked clicks:', 'wpmandrill'); ?><br/><span><?php echo $stats['general']['stats']['clicks']?></span></div>
<?php
if ( $stats['general']['stats']['rejects'] ) echo '<div class="stat_box warning">'.__('Rejects:', 'wpmandrill').'<br/><span>'.$stats['general']['stats']['rejects'].'</span></div>';
if ( $stats['general']['stats']['complaints'] ) echo '<div class="stat_box warning">'.__('Complaints:', 'wpmandrill').'<br/><span>'.$stats['general']['stats']['complaints'].'</span></div>';
if ( $stats['general']['backlog'] ) echo '<div class="stat_box warning">'.__('Current backlog:', 'wpmandrill').'<br/><span>'.$stats['general']['backlog'].' emails</span></div>';
?>
</div>
</div>
<div style="clear: both;"></div>
<div id="filtered_reports">
<h3><?php _e('Filtered statistics:', 'wpmandrill'); ?></h3>
<label for="filter"><?php _e('Filter by:', 'wpmandrill'); ?> </label>
<select id="filter" name="filter">
<option value="none" selected="selected" ><?php _e('No filter', 'wpmandrill'); ?></option>
<optgroup label="<?php _e('Sender:', 'wpmandrill'); ?>">
<?php
foreach ( array_keys($stats['stats']['hourly']['senders']) as $sender) {
echo '<option value="s:'.$sender.'">'.$sender.'</option>';
}
?>
</optgroup>
<optgroup label="<?php _e('Tag:', 'wpmandrill'); ?>">
<?php
if ( isset($stats['stats']['hourly']['tags']['detailed_stats'])
&& is_array($stats['stats']['hourly']['tags']['detailed_stats']) ) {
foreach ( array_keys($stats['stats']['hourly']['tags']['detailed_stats']) as $tag) {
echo '<option value="'.$tag.'">'.$tag.'</option>';
}
}
?>
</optgroup>
</select>
<label for="display"><?php _e('Display:', 'wpmandrill'); ?> </label>
<select id="display" name="display">
<option value="volume"><?php _e('Total Volume per Period', 'wpmandrill'); ?></option>
<option value="average"><?php _e('Average Volume per Period', 'wpmandrill'); ?></option>
</select><div id="ajax-icon-container"><span id="loading_data" class="hidden"></span></div>
<div id="filtered_reports_canvas">
<div id="filtered_recent" style="width: 50%;height: 300px; float: left;"></div>
<div id="filtered_oldest" style="width: 50%;height: 300px; float: left;"></div>
</div>
<div style="clear: both;"></div>
</div>
<br/><br/>
<div id="hourly_report"></div>
<script type="text/javascript">
function emailFormatter(v, axis) {
return v.toFixed(axis.tickDecimals) +" emails";
}
function percentageFormatter(v, axis) {
return v.toFixed(axis.tickDecimals) +"%";
}
function wpm_showTooltip(x, y, contents) {
jQuery('<div id="wpm_tooltip">' + contents + '</div>').css( {
position: 'absolute',
display: 'none',
top: y + 5,
left: x + 5,
border: '1px solid #fdd',
padding: '2px',
'background-color': '#fee',
opacity: 0.80
}).appendTo("body").fadeIn(200);
}
<?php
// hourly stats data
$hticks = array_keys($stats['graph']['hourly']['delivered']);
array_walk($hticks, 'wpMandrill_transformJSArray');
$hvolume = $stats['graph']['hourly']['delivered'];
$horate = $stats['graph']['hourly']['open_rate'];
$hcrate = $stats['graph']['hourly']['click_rate'];
array_walk($hvolume,'wpMandrill_transformJSArray');
array_walk($horate, 'wpMandrill_transformJSArray');
array_walk($hcrate, 'wpMandrill_transformJSArray');
// daily stats data
$dticks = array_keys($stats['graph']['daily']['delivered']);
array_walk($dticks, 'wpMandrill_transformJSArray');
$day_keys = array();
foreach(array_keys($stats['graph']['daily']['delivered']) as $day_index => $day_key) {
$day_keys[$day_index] = $day_key;
}
$dvolume = $stats['graph']['daily']['delivered'];
$dorate = $stats['graph']['daily']['open_rate'];
$dcrate = $stats['graph']['daily']['click_rate'];
array_walk($dvolume,'wpMandrill_transformJSArray', array(1, $day_keys));
array_walk($dorate, 'wpMandrill_transformJSArray', array(1, $day_keys));
array_walk($dcrate, 'wpMandrill_transformJSArray', array(1, $day_keys));
?>
var hvolume = [<?php echo implode(',',$hvolume);?>];
var hopenrates = [<?php echo implode(',',$horate);?>];
var hclickrates = [<?php echo implode(',',$hcrate);?>]
var dvolume = [<?php echo implode(',',$dvolume);?>];
var dopenrates = [<?php echo implode(',',$dorate);?>];
var dclickrates = [<?php echo implode(',',$dcrate);?>]
var dticks = [<?php echo implode(',',array_keys($stats['graph']['daily']['delivered']));?>]
jQuery(function () {
var previousPoint = null;
jQuery("#hourly_report_canvas").on("plothover", function (event, pos, item) {
if (item) {
if (previousPoint != item.dataIndex) {
previousPoint = item.dataIndex;
jQuery("#wpm_tooltip").remove();
var x = item.datapoint[0].toFixed(0);
if ( item.seriesIndex == 0 ) {
var y = item.datapoint[1].toFixed(0);
wpm_showTooltip(item.pageX, item.pageY, item.series.label + " (at hour " + x + ") = " + y + " emails");
} else {
var y = item.datapoint[1].toFixed(2);
wpm_showTooltip(item.pageX, item.pageY, item.series.label + " (at hour " + x + ") = " + y + "%");
}
}
}
else {
jQuery("#wpm_tooltip").remove();
previousPoint = null;
}
});
jQuery("#daily_report_canvas").on("plothover", function (event, pos, item) {
if (item) {
if (previousPoint != item.dataIndex) {
previousPoint = item.dataIndex;
jQuery("#wpm_tooltip").remove();
var x = dticks[item.dataIndex];
if ( item.seriesIndex == 0 ) {
var y = item.datapoint[1].toFixed(0);
wpm_showTooltip(item.pageX, item.pageY, "Day " + x + ": " + y + " emails");
} else {
var y = item.datapoint[1].toFixed(2);
wpm_showTooltip(item.pageX, item.pageY, item.series.label + " for " + x + ": " + y + "%");
}
}
}
else {
jQuery("#wpm_tooltip").remove();
previousPoint = null;
}
});
jQuery.plot(jQuery("#hourly_report_canvas"),
[ { data: hvolume, label: "Volume", yaxis: 2, bars: {show: true, barWidth: 0.6, align: "center"}, lines: { show: true }},
{ data: hopenrates, label: "Open Rate" },
{ data: hclickrates, label: "Click Rate" }],
{
series: {
points: { show: true },
lines: { show: true },
shadowSize: 7
},
grid: {
hoverable: true,
aboveData: true,
borderWidth: 0,
minBorderMargin: 10,
margin: {
top: 10,
left: 10,
bottom: 15,
right: 100
}
},
xaxes: [ { ticks: [<?php echo implode(',',$hticks);?>] } ],
yaxes: [ { min: 0, tickFormatter: percentageFormatter },
{
min: 0,
alignTicksWithAxis: 1, //1=right, null=left
position: 'sw',
tickFormatter: emailFormatter
} ],
legend: { position: 'ne', margin: [20, 10]}
});
jQuery.plot(jQuery("#daily_report_canvas"),
[ { data: dvolume, label: "Volume", yaxis: 2, bars: {show: true, barWidth: 0.6, align: "center"}, lines: { show: true }},
{ data: dopenrates, label: "Open Rate" },
{ data: dclickrates, label: "Click Rate" }],
{
series: {
points: { show: true },
lines: { show: true },
shadowSize: 7
},
grid: {
hoverable: true,
aboveData: true,
borderWidth: 0,
minBorderMargin: 10,
margin: {
top: 10,
left: 10,
bottom: 15,
right: 10
}
},
xaxes: [ { ticks: [<?php echo implode(',', $dticks);?>] } ],
yaxes: [ { min: 0, tickFormatter: percentageFormatter },
{
min: 0,
alignTicksWithAxis: 1, //1=right, null=left
position: 'sw',
tickFormatter: emailFormatter
} ],
legend: { position: 'ne', margin: [20, 10]}
});
});
</script>
<h3><?php echo $lit['hourly']['title']; ?></h3>
<h4><?php echo $lit['subtitle']; ?></h4>
<div id="hourly_report_canvas" style="height: 400px;"></div><br/><br/>
<h3><?php echo $lit['daily']['title']; ?></h3>
<h4><?php echo $lit['subtitle']; ?></h4>
<div id="daily_report_canvas" style="height: 400px;"></div>
<h3><a href="http://mandrillapp.com/" target="_target"><?php _e('For more detailed statistics, please visit your Mandrill Dashboard','wpmandrill'); ?></a>.</h3>
<?php
wpMandrill::$stats = $stats;
?>