<?php # click stats per message require_once dirname(__FILE__).'/accesscheck.php'; if (isset($_GET['id'])) { $id = sprintf('%d',$_GET['id']); } else { $id = 0; } $some = 0; $access = accessLevel('mclicks'); switch ($access) { case 'owner': $subselect = ' and owner = ' . $_SESSION["logindetails"]["id"]; if ($id) { $allow = Sql_Fetch_Row_query(sprintf('select owner from %s where id = %d %s',$GLOBALS['tables']['message'],$id,$subselect)); if ($allow[0] != $_SESSION["logindetails"]["id"]) { print $GLOBALS['I18N']->get('You do not have access to this page'); return; } } break; case 'all': $subselect = ''; break; case 'none': default: $subselect = ' where id = 0'; print $GLOBALS['I18N']->get('You do not have access to this page'); return; break; } $download = !empty($_GET['dl']); if ($download) { ob_end_clean(); # header("Content-type: text/plain"); header('Content-type: text/csv'); header('Content-disposition: attachment; filename="phpList Campaign click statistics.csv"'); ob_start(); } if (!$id) { /* $req = Sql_Query(sprintf('select distinct messageid, subject, sum(clicked) as totalclicks, count(distinct userid) as users, count(distinct linkid) as linkcount from %s as linktrack, %s as message where clicked and linktrack.messageid = message.id %s group by messageid order by entered desc limit 50', $GLOBALS['tables']['linktrack'],$GLOBALS['tables']['message'],$subselect));*/ $req = Sql_Query(sprintf('select distinct messageid, subject, sum(total) as total, count(forwardid) as linkcount,sum(clicked) as totalclicks, sum(htmlclicked) as htmlclicked,sum(textclicked) as textclicked from %s as linktrack_ml, %s as message where clicked and linktrack_ml.messageid = message.id %s group by messageid order by entered desc limit 50', $GLOBALS['tables']['linktrack_ml'],$GLOBALS['tables']['message'],$subselect)); if (!Sql_Affected_Rows()) { print '<p class="information">'.$GLOBALS['I18N']->get('There are currently no messages to view').'</p>'; } $ls = new WebblerListing($GLOBALS['I18N']->get('Available Messages')); while ($row = Sql_Fetch_Array($req)) { $some = 1; $totalusers = Sql_Fetch_Row_Query(sprintf('select count(userid) from %s where messageid = %d and status = "sent"',$GLOBALS['tables']['usermessage'],$row['messageid'])); $totalclicked = Sql_Fetch_Row_Query(sprintf('select count(distinct userid) from %s where messageid = %d',$GLOBALS['tables']['linktrack_uml_click'],$row['messageid'])); if ($totalusers[0] > 0) { $clickrate = sprintf('%0.2f',($totalclicked[0] / $totalusers[0] * 100)); } else { $clickrate = $GLOBALS['I18N']->get('N/A'); } if (!$download) { $element = '<!--'.$row['messageid']. '-->'.shortenTextDisplay($row['subject']); } else { $element = '<!--'.$row['messageid']. '-->'.$row['subject']; } $ls->addElement($element,PageURL2('mclicks&id='.$row['messageid'])); $ls->setClass($element,'row1'); $ls->addColumn($element,$GLOBALS['I18N']->get('links'),$row['linkcount']); # $ls->addColumn($element,$GLOBALS['I18N']->get('sent'),$totalusers[0]); $ls->addColumn($element,$GLOBALS['I18N']->get('user clicks'),$totalclicked[0]); $ls->addColumn($element,$GLOBALS['I18N']->get('clickrate'),$clickrate); $ls->addColumn($element,$GLOBALS['I18N']->get('total clicks'),$row['totalclicks']); # $ls->addColumn($element,$GLOBALS['I18N']->get('total'),$row['total']); # $ls->addColumn($element,$GLOBALS['I18N']->get('users'),$row['users']); $ls->addRow($element,'','<div class="content listingsmall fright gray">'.$GLOBALS['I18N']->get('html').': '.$row['htmlclicked'].'</div><div class="content listingsmall fright gray">'.$GLOBALS['I18N']->get('text').': '.$row['textclicked'].'</div>'); /* this one is the percentage of total links versus clicks. I guess that's too detailed for most people. * besides it'll be low $perc = sprintf('%0.2f',($row['totalclicks'] / $row['total'] * 100)); $ls->addColumn($element,$GLOBALS['I18N']->get('rate'),$perc.' %'); */ } if ($some) { print '<div class="action">'; print '<p>'.PageLinkButton('mclicks&dl=true',$GLOBALS['I18N']->get('Download as CSV file')).'</p>'; print '</div>'; # print '<p>'.$GLOBALS['I18N']->get('Select Message to view').'</p>'; print $ls->display(); } if ($download) { ob_end_clean(); print $ls->tabDelimited(); } return; } print '<h3>'.$GLOBALS['I18N']->get('Click Details for a Message').'</h3>'; $messagedata = Sql_Fetch_Array_query("SELECT * FROM {$tables['message']} where id = $id $subselect"); $totalusers = Sql_Fetch_Row_Query(sprintf('select count(userid) from %s where messageid = %d and status = "sent"',$GLOBALS['tables']['usermessage'],$id)); $totalbounced = Sql_Fetch_Row_Query(sprintf('select count(user) from %s where message = %d',$GLOBALS['tables']['user_message_bounce'],$id)); $totalclicked = Sql_Fetch_Row_Query(sprintf('select count(distinct userid) from %s where messageid = %d',$GLOBALS['tables']['linktrack_uml_click'],$id)); if (($totalusers[0] - $totalbounced[0]) > 0) { $clickperc = sprintf('%0.2f',($totalclicked[0] / ($totalusers[0] - $totalbounced[0]) * 100)); } else { $clickperc = $GLOBALS['I18N']->get('N/A'); } print '<table class="mclicksDetails"> <tr><td>'.$GLOBALS['I18N']->get('Subject').'<td><td>'.$messagedata['subject'].'</td></tr> <tr><td>'.$GLOBALS['I18N']->get('Entered').'<td><td>'.$messagedata['entered'].'</td></tr> <tr><td>'.$GLOBALS['I18N']->get('Date sent').'<td><td>'.$messagedata['sent'].'</td></tr> <tr><td>'.$GLOBALS['I18N']->get('Sent to').'<td><td>'.$totalusers[0].' '.$GLOBALS['I18N']->get('Subscribers').'</td></tr>'; if ($totalusers[0] > 0) { print '<tr><td>'.$GLOBALS['I18N']->get('Bounced').'<td><td>'.$totalbounced[0].' ('; print sprintf('%0.2f',($totalbounced[0] / $totalusers[0] * 100)); print '%)</td></tr>'; } print '<tr><td>'.$GLOBALS['I18N']->get('Clicks').'<td><td>'.$totalclicked[0].'</td></tr> <tr><td>'.$GLOBALS['I18N']->get('Click rate').'<td><td>'.$clickperc.' %</td></tr> </table><hr/>'; $ls = new WebblerListing($GLOBALS['I18N']->get('Campaign click statistics')); $req = Sql_Query(sprintf('select url,firstclick,date_format(latestclick, "%%e %%b %%Y %%H:%%i") as latestclick,total,clicked,htmlclicked,textclicked,forwardid from %s ml, %s forward where ml.messageid = %d and ml.forwardid = forward.id',$GLOBALS['tables']['linktrack_ml'],$GLOBALS['tables']['linktrack_forward'],$id)); $summary = array(); $summary['totalclicks'] = 0; $summary['totalsent'] = 0; $summary['uniqueclicks'] = 0; while ($row = Sql_Fetch_Array($req)) { # if (CLICKTRACK_SHOWDETAIL) { $uniqueclicks = Sql_Fetch_Array_Query(sprintf('select count(distinct userid) as users from %s where messageid = %d and forwardid = %d', $GLOBALS['tables']['linktrack_uml_click'],$id,$row['forwardid'])); # } # $element = sprintf('<a href="%s" target="_blank" class="url" title="%s">%s</a>',$row['url'],$row['url'],substr(str_replace('http://','',$row['url']),0,50)); if (!$download) { $element = shortenTextDisplay($row['url']); } else { $element = $row['url']; } $ls->addElement($element,PageURL2('uclicks&id='.$row['forwardid'])); $ls->setClass($element,'row1'); # $ls->addColumn($element,$GLOBALS['I18N']->get('firstclick'),formatDateTime($row['firstclick'],1)); # $ls->addColumn($element,$GLOBALS['I18N']->get('latestclick'),$row['latestclick']); ## set is confusing, as it is total links sent, not total users sent, https://mantis.phplist.com/view.php?id=17057 ## remove # $ls->addColumn($element,$GLOBALS['I18N']->get('sent'),$row['total']); //$ls->addColumn($element,$GLOBALS['I18N']->get('clicks'),$row['clicked'].'<span class="viewusers"><a class="button" href="'.PageUrl2('userclicks&msgid='.$id.'&fwdid='.$row['forwardid']).'" title="'.$GLOBALS['I18N']->get('view users').'"></a></span>'); //$perc = sprintf('%0.2f',($row['clicked'] / $row['total'] * 100)); //$ls->addColumn($element,$GLOBALS['I18N']->get('clickrate'),$perc.'%'); # if (CLICKTRACK_SHOWDETAIL) { $ls->addColumn($element,$GLOBALS['I18N']->get('clicks'),$uniqueclicks['users']); $perc = sprintf('%0.2f',($uniqueclicks['users'] / $totalusers[0] * 100)); $ls->addColumn($element,$GLOBALS['I18N']->get('clickrate'),$perc.'%'); $summary['uniqueclicks'] += $uniqueclicks['users']; $moreInfo1 = ' <div class="content listingsmall fright gray">'.s('html').': '.$row['htmlclicked'].'</div>'.' <div class="content listingsmall fright gray">'.s('text').': '.$row['textclicked'].'</div>'.' '; $moreInfo2 = ' <div class="content listingsmall fright gray">'.s('firstclick').': '.formatDateTime($row['firstclick']).'</div>'.' <div class="content listingsmall fright gray">'.s('latestclick').': '.$row['latestclick'].'</div>'.' '; ## @@TODO the totals for HTML+text will now not match the total clicks $ls->addRow($element,$moreInfo1,$moreInfo2); # } $summary['totalclicks'] += $row['clicked']; $summary['totalsent'] += $row['total']; } $ls->addElement('total'); $ls->setClass('total','rowtotal'); //$ls->addColumn('total',$GLOBALS['I18N']->get('clicks'),$summary['totalclicks']); //$perc = sprintf('%0.2f',($summary['totalclicks'] / $summary['totalsent'] * 100)); //$ls->addColumn('total',$GLOBALS['I18N']->get('clickrate'),$perc.'%'); #if (CLICKTRACK_SHOWDETAIL) { $ls->addColumn('total',$GLOBALS['I18N']->get('clicks'),$summary['uniqueclicks']); $perc = sprintf('%0.2f',($summary['uniqueclicks'] / $totalusers[0] * 100)); $ls->addColumn('total',$GLOBALS['I18N']->get('clickrate'),$perc.'%'); #} print $ls->display();
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
FCKeditor | Folder | 0755 |
|
|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
auth | Folder | 0755 |
|
|
commonlib | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
lan | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
oldmailer | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
styles | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
uploadimages | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 171 B | 0644 |
|
.minceconf | File | 994 B | 0644 |
|
AnalyticsQuery.php | File | 985 B | 0644 |
|
CsvReader.php | File | 1.27 KB | 0644 |
|
EmailSender.php | File | 477 B | 0644 |
|
about.php | File | 4.22 KB | 0644 |
|
accesscheck.php | File | 1.51 KB | 0644 |
|
addprefix.php | File | 966 B | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 10.68 KB | 0644 |
|
adminattributes.php | File | 6.39 KB | 0644 |
|
admins.php | File | 4.54 KB | 0644 |
|
adodb.inc | File | 6.49 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 102 B | 0644 |
|
blacklistemail.php | File | 1.04 KB | 0644 |
|
bounce.php | File | 10.09 KB | 0644 |
|
bouncemgt.php | File | 1.39 KB | 0644 |
|
bouncerule.php | File | 3 KB | 0644 |
|
bouncerules.php | File | 5.86 KB | 0644 |
|
bounces.php | File | 6.01 KB | 0644 |
|
catlists.php | File | 2.64 KB | 0644 |
|
checkbouncerules.php | File | 1.34 KB | 0644 |
|
checki18n.php | File | 2.69 KB | 0644 |
|
checkprerequisites.php | File | 1.05 KB | 0644 |
|
class.html.mime.mail-outlookfix.inc | File | 19.93 KB | 0644 |
|
class.html.mime.mail.inc | File | 19.35 KB | 0644 |
|
class.image.inc | File | 5.77 KB | 0644 |
|
class.phplistmailer.php | File | 24.23 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.5 KB | 0644 |
|
community.php | File | 1.78 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 5.25 KB | 0644 |
|
connect.php | File | 74.36 KB | 0644 |
|
convertstats.php | File | 5.51 KB | 0644 |
|
converttoutf8.php | File | 3.77 KB | 0644 |
|
cron.php | File | 3.37 KB | 0644 |
|
date.php | File | 6.08 KB | 0644 |
|
dbcheck.php | File | 111 B | 0644 |
|
defaultFrontendTexts.php | File | 9.57 KB | 0644 |
|
defaultconfig.inc | File | 23.52 KB | 0644 |
|
defaultconfig.php | File | 24.92 KB | 0644 |
|
defaultplugin.php | File | 23.31 KB | 0644 |
|
defaults.php | File | 2.83 KB | 0644 |
|
defaultsystemtemplate.php | File | 1.83 KB | 0644 |
|
defaulttest.php | File | 1.12 KB | 0644 |
|
dlusers.php | File | 232 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 2.83 KB | 0644 |
|
editattributes.php | File | 6.7 KB | 0644 |
|
editlist.php | File | 6.79 KB | 0644 |
|
error_log | File | 274 B | 0644 |
|
eventlog.php | File | 4.49 KB | 0644 |
|
export.php | File | 4.84 KB | 0644 |
|
exportuserdata.php | File | 6.36 KB | 0644 |
|
fckphplist.php | File | 43.21 KB | 0644 |
|
footer.inc | File | 1.19 KB | 0644 |
|
footer.old.inc | File | 1.82 KB | 0644 |
|
gchart.php | File | 869 B | 0644 |
|
generatebouncerules.php | File | 5.24 KB | 0644 |
|
getrss.php | File | 3.94 KB | 0644 |
|
header.inc | File | 1.75 KB | 0644 |
|
home.php | File | 16.36 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 1.64 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 795 B | 0644 |
|
import.php | File | 2.54 KB | 0644 |
|
import1.php | File | 9.41 KB | 0644 |
|
import2.php | File | 243 B | 0644 |
|
import3.php | File | 20.26 KB | 0644 |
|
import4.php | File | 15.63 KB | 0644 |
|
importadmin.php | File | 14.5 KB | 0644 |
|
importlib.php | File | 2.86 KB | 0644 |
|
importsimple.php | File | 5.84 KB | 0644 |
|
index.php | File | 22.53 KB | 0644 |
|
index.php.old | File | 22.53 KB | 0644 |
|
info.php | File | 1.01 KB | 0644 |
|
init.php | File | 21.7 KB | 0644 |
|
initialise.php | File | 10.02 KB | 0644 |
|
initlanguages.php | File | 794 B | 0644 |
|
languages.php | File | 22.43 KB | 0644 |
|
lib.php | File | 59.85 KB | 0644 |
|
list.php | File | 11.79 KB | 0644 |
|
listbounces.php | File | 4.64 KB | 0644 |
|
login.php | File | 6.05 KB | 0755 |
|
logout.php | File | 224 B | 0644 |
|
massremove.php | File | 1.81 KB | 0644 |
|
massunconfirm.php | File | 1.52 KB | 0644 |
|
mclicks.php | File | 9.55 KB | 0644 |
|
members.php | File | 16.58 KB | 0644 |
|
mergeduplicates.php | File | 4.28 KB | 0644 |
|
message.php | File | 7.27 KB | 0644 |
|
messages.php | File | 18.94 KB | 0644 |
|
mimePart.php | File | 10.7 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.79 KB | 0644 |
|
msgstatus.php | File | 1.18 KB | 0644 |
|
mviews.php | File | 7.88 KB | 0644 |
|
mysql.inc | File | 11.19 KB | 0644 |
|
mysqli.inc | File | 11.58 KB | 0644 |
|
pageaction.php | File | 1.08 KB | 0644 |
|
pagetop.php | File | 1.17 KB | 0644 |
|
phpListAdminAuthentication.php | File | 7.2 KB | 0644 |
|
pluginlib.php | File | 6.39 KB | 0644 |
|
plugins.php | File | 10.32 KB | 0644 |
|
preparesend.php | File | 627 B | 0644 |
|
processbounces.php | File | 29.71 KB | 0644 |
|
processqueue.php | File | 3.73 KB | 0644 |
|
purgerss.php | File | 1.38 KB | 0644 |
|
readtestmail.php | File | 11.26 KB | 0644 |
|
reconcileusers.php | File | 25.16 KB | 0644 |
|
redirecttoupdater.php | File | 170 B | 0644 |
|
reindex.php | File | 1.69 KB | 0644 |
|
rsslib.php | File | 2.8 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 5.58 KB | 0644 |
|
send_core.php | File | 56.08 KB | 0644 |
|
sendemaillib.php | File | 64.2 KB | 0644 |
|
sendprepared.php | File | 4.33 KB | 0644 |
|
sessionlib.php | File | 2.92 KB | 0644 |
|
setpermissions.php | File | 1.57 KB | 0644 |
|
setup.php | File | 3.21 KB | 0644 |
|
sidebar.php | File | 2.67 KB | 0644 |
|
spage.php | File | 3.29 KB | 0644 |
|
spageedit.php | File | 17.07 KB | 0644 |
|
statsmgt.php | File | 1.22 KB | 0644 |
|
statsoverview.php | File | 7.62 KB | 0644 |
|
stresstest.php | File | 5.1 KB | 0644 |
|
structure.php | File | 26.79 KB | 0644 |
|
subscribelib2.php | File | 66.02 KB | 0644 |
|
subscriberstats.php | File | 591 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 784 B | 0644 |
|
systemstats.php | File | 7.71 KB | 0644 |
|
template.php | File | 12.72 KB | 0644 |
|
templates.php | File | 3.02 KB | 0644 |
|
tests.php | File | 1.57 KB | 0644 |
|
uclicks.php | File | 6.52 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.77 KB | 0644 |
|
updatetlds.php | File | 399 B | 0644 |
|
updatetranslation.php | File | 1.94 KB | 0644 |
|
upgrade.php | File | 29.03 KB | 0644 |
|
user.php | File | 2.35 KB | 0644 |
|
usercheck.php | File | 2.27 KB | 0644 |
|
userclicks.php | File | 8 KB | 0644 |
|
userhistory.php | File | 127 B | 0644 |
|
usermgt.php | File | 1.83 KB | 0644 |
|
users.php | File | 393 B | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 610 B | 0644 |
|
viewrss.php | File | 4.07 KB | 0644 |
|
viewtemplate.php | File | 1.82 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|