<?php // click stats listing users require_once dirname(__FILE__).'/accesscheck.php'; if (isset($_GET['msgid'])) { $msgid = sprintf('%d', $_GET['msgid']); } else { $msgid = 0; } if (isset($_GET['fwdid'])) { $fwdid = sprintf('%d', $_GET['fwdid']); } else { $fwdid = 0; } if (isset($_GET['userid'])) { $userid = sprintf('%d', $_GET['userid']); } else { $userid = 0; } if (isset($_GET['start'])) { $start = sprintf('%d', $_GET['start']); } else { $start = 0; } if (!$msgid && !$fwdid && !$userid) { echo $GLOBALS['I18N']->get('Invalid Request'); return; } $access = accessLevel('userclicks'); switch ($access) { case 'owner': case 'all': $subselect = ''; break; case 'none': default: print $GLOBALS['I18N']->get('You do not have access to this page'); return; break; } $download = !empty($_GET['dl']); $downloadContent = ''; if ($download) { ob_end_clean(); header('Content-type: text/csv'); header('Content-disposition: attachment; filename="phpList click statistics.csv"'); ob_start(); } //$limit = ' limit 100'; $ls = new WebblerListing($GLOBALS['I18N']->get('Click statistics')); if ($fwdid) { $urldata = Sql_Fetch_Array_Query(sprintf('select url from %s where id = %d', $GLOBALS['tables']['linktrack_forward'], $fwdid)); } if ($msgid) { // $messagedata = Sql_Fetch_Array_query("SELECT * FROM {$tables['message']} where id = $msgid $subselect"); $messagedata = loadMessageData($msgid); } if ($userid) { $userdata = Sql_Fetch_Array_query("SELECT * FROM {$tables['user']} where id = $userid $subselect"); } if ($fwdid && $msgid) { echo '<h3>'.$GLOBALS['I18N']->get('Subscriber clicks for a URL in a campaign'); echo ' '.strtolower(PageLink2('uclicks&id='.$fwdid, $urldata['url'])); echo '</h3>'; $downloadContent = s('Subscribers who clicked on URL "%s" in the campaign with subject "%s", sent %s', $urldata['url'], $messagedata['subject'], $messagedata['sent']).PHP_EOL; echo '<table class="userclicksDetails">'; if ($messagedata['subject'] != $messagedata['campaigntitle']) { echo '<tr><td>'.s('Title').'<td><td>'.$messagedata['campaigntitle'].'</td></tr>'; } echo '<tr><td>'.s('Subject').'<td><td>'.PageLink2('mclicks&id='.$msgid, $messagedata['subject']).'</td></tr> <tr><td>' .$GLOBALS['I18N']->get('Entered').'<td><td>'.$messagedata['entered'].'</td></tr> <tr><td>' .$GLOBALS['I18N']->get('Sent').'<td><td>'.$messagedata['sent'].'</td></tr> </table>'; echo '<div class="fright">'.PageLinkButton('userclicks&fwdid='.$fwdid.'&msgid='.$msgid.'&dl=1', s('Download subscribers')).'</div>'; $query = sprintf('select htmlclicked, textclicked, user.email,user.id as userid,firstclick,latestclick,clicked from %s as uml_click, %s as user where uml_click.userid = user.id and uml_click.forwardid = %d and uml_click.messageid = %d and uml_click.clicked', $GLOBALS['tables']['linktrack_uml_click'], $GLOBALS['tables']['user'], $fwdid, $msgid); } elseif ($userid && $msgid) { echo '<h3>'.$GLOBALS['I18N']->get('Subscriber clicks on a campaign').'</h3>'; echo s('Subscriber').' '.PageLink2('user&id='.$userid, $userdata['email']); echo '</h3>'; echo '<table class="userclickDetails">'; if ($messagedata['subject'] != $messagedata['campaigntitle']) { echo '<tr><td>'.s('Title').'<td><td>'.$messagedata['campaigntitle'].'</td></tr>'; } echo ' <tr><td>' .$GLOBALS['I18N']->get('Subject').'<td><td>'.PageLink2('mclicks&id='.$msgid, $messagedata['subject']).'</td></tr> <tr><td>' .$GLOBALS['I18N']->get('Entered').'<td><td>'.$messagedata['entered'].'</td></tr> <tr><td>' .$GLOBALS['I18N']->get('Sent').'<td><td>'.$messagedata['sent'].'</td></tr> </table>'; $query = sprintf('select htmlclicked, textclicked,user.email,user.id as userid,firstclick,latestclick, clicked,messageid,forwardid,url from %s as uml_click, %s as user, %s as forward where uml_click.userid = user.id and uml_click.userid = %d and uml_click.messageid = %d and forward.id = uml_click.forwardid', $GLOBALS['tables']['linktrack_uml_click'], $GLOBALS['tables']['user'], $GLOBALS['tables']['linktrack_forward'], $userid, $msgid); } elseif ($fwdid) { echo '<h3>'.$GLOBALS['I18N']->get('Subscribers who clicked a URL').' <b>'.$urldata['url'].'</b></h3>'; $downloadContent = s('Subscribers who clicked on the URL "%s" across all campaigns', $urldata['url']).PHP_EOL; echo '<div class="fright">'.PageLinkButton('userclicks&fwdid='.$fwdid.'&dl=1', s('Download subscribers')).'</div>'; $query = sprintf(' SELECT user.email, user.id AS userid, MIN(firstclick) AS firstclick, MAX(latestclick) AS latestclick, SUM(clicked) AS clicked FROM %s AS uml_click JOIN %s AS user ON uml_click.userid = user.id WHERE uml_click.forwardid = %d GROUP BY uml_click.userid ', $GLOBALS['tables']['linktrack_uml_click'], $GLOBALS['tables']['user'], $fwdid ); } elseif ($msgid) { echo '<h3>'.$GLOBALS['I18N']->get('Subscribers who clicked a campaign').'</h3>'; echo '<table class="userclickDetails">'; if ($messagedata['subject'] != $messagedata['campaigntitle']) { echo '<tr><td>'.s('Title').'<td><td>'.$messagedata['campaigntitle'].'</td></tr>'; } echo ' <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('Sent').'<td><td>'.$messagedata['sent'].'</td></tr> </table>'; $downloadContent = s('Subscribers who clicked on campaign with subject "%s", sent %s', $messagedata['subject'], $messagedata['sent']).PHP_EOL; echo '<div class="fright">'.PageLinkButton('userclicks&msgid='.$msgid.'&dl=1', s('Download subscribers')).'</div>'; $query = sprintf(' SELECT DISTINCT user.email, user.id AS userid, MIN(firstclick) AS firstclick, MAX(latestclick) AS latestclick, SUM(clicked) AS clicked FROM %s AS uml_click JOIN %s AS user ON uml_click.userid = user.id WHERE uml_click.messageid = %d GROUP BY uml_click.userid ', $GLOBALS['tables']['linktrack_uml_click'], $GLOBALS['tables']['user'], $msgid ); } elseif ($userid) { echo '<div class="jumbotron">'.$GLOBALS['I18N']->get('All clicks by').' <b>'.PageLink2('user&id='.$userid, $userdata['email']).'</b></div>'; $query = ' SELECT SUM(htmlclicked) AS htmlclicked, SUM(textclicked) AS textclicked, user.email, user.id AS userid, MIN(firstclick) AS firstclick, MAX(latestclick) AS latestclick, SUM(clicked) AS clicked, GROUP_CONCAT( messageid ORDER BY messageid SEPARATOR \' \') AS messageid, forwardid, url FROM '.$GLOBALS['tables']['linktrack_uml_click'].' AS uml_click JOIN '.$GLOBALS['tables']['user'].' AS user ON uml_click.userid = user.id JOIN '.$GLOBALS['tables']['linktrack_forward'].' AS forward ON forward.id = uml_click.forwardid WHERE uml_click.userid = '.sprintf('%d', $userid).' GROUP BY forwardid ORDER BY clicked DESC, url '; } //ob_end_flush(); //flush(); $req = Sql_Query($query); $total = Sql_Num_Rows($req); if ($total > 100 && !$download) { echo simplePaging('userclicks&msgid='.$msgid.'&fwdid='.$fwdid.'&userid='.$userid, $start, $total, 100, s('Subscribers')); $limit = ' limit '.$start.', 100'; $req = Sql_Query($query.' '.$limit); } $summary = array(); $summary['totalclicks'] = 0; while ($row = Sql_Fetch_Array($req)) { // print $row['email'] . "<br/>"; if ($download) { $downloadContent .= $row['email'].PHP_EOL; } else { if (!$userid) { $element = shortenEmailDisplay($row['email']); $ls->addElement($element, PageUrl2('user&id='.$row['userid'])); $ls->setClass($element, 'row1'); } else { // $link = substr($row['url'],0,50); // $element = PageLink2($link,$link,PageUrl2('uclicks&id='.$row['forwardid']),"",true,$row['url']); $element = shortenUrlDisplay($row['url']); $ls->addElement($element, PageUrl2('uclicks&id='.$row['forwardid'])); $ls->setClass($element, 'row1'); $messageLinks = preg_replace_callback( '/\d+/', function ($matches) { return PageLink2("mclicks&id={$matches[0]}", $matches[0]); }, $row['messageid'] ); $ls->addColumn($element, $GLOBALS['I18N']->get('message'), $messageLinks); } // $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)); // $total = Sql_Verbose_Query(sprintf('select count(*) as total from %s where messageid = %d and url = "%s"', // $GLOBALS['tables']['linktrack'],$id,$row['url'])); // $totalsent = Sql_Fetch_Array_Query(sprintf('select count(*) as total from %s where url = "%s"', // $GLOBALS['tables']['linktrack'],$urldata['url'])); $ls_userid = ''; if (!empty($row['userid'])) { $userStatus = Sql_Fetch_Assoc_Query(sprintf('select blacklisted,confirmed from %s where id = %d', $GLOBALS['tables']['user'], $row['userid'])); $ls->addColumn($element, s('Status'), $userStatus['confirmed'] && empty($userStatus['blacklisted']) ? $GLOBALS['img_tick'] : $GLOBALS['img_cross']); } $ls->addColumn($element, $GLOBALS['I18N']->get('firstclick'), formatDateTime($row['firstclick'], 1)); $ls->addColumn($element, $GLOBALS['I18N']->get('latestclick'), formatDateTime($row['latestclick'], 1)); $ls->addColumn($element, $GLOBALS['I18N']->get('clicks'), $row['clicked']); if (!$userid) { //Display $ls_userid = '<span class="viewusers"><a class="button" href="' . PageUrl2('userclicks&userid=' . $row['userid']) . '" title="' . s('view user') . '"></a></span>'; $ls->addColumn($element, s('View clicks'), $ls_userid); } if (!empty($row['htmlclicked']) && !empty($row['textclicked'])) { $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>', ''); } // $ls->addColumn($element,$GLOBALS['I18N']->get('sent'),$total['total']); // $perc = sprintf('%0.2f',($row['numclicks'] / $totalsent['total'] * 100)); // $ls->addColumn($element,$GLOBALS['I18N']->get('clickrate'),$perc.'%'); $summary['totalclicks'] += $row['clicked']; } } //# adding a total doesn't make sense if we're not listing everything, it'll only do the total of the page //$ls->addElement($GLOBALS['I18N']->get('total')); //$ls->setClass($GLOBALS['I18N']->get('total'),'rowtotal'); //$ls->addColumn($GLOBALS['I18N']->get('total'),$GLOBALS['I18N']->get('clicks'),$summary['totalclicks']); if (!$download) { echo $ls->display(); } else { ob_end_clean(); echo $downloadContent; exit; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 489 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 |
|
Updater.php | File | 193 B | 0644 |
|
about.php | File | 7.4 KB | 0644 |
|
accesscheck.php | File | 715 B | 0644 |
|
addprefix.php | File | 1.01 KB | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 12.77 KB | 0644 |
|
adminattributes.php | File | 7.46 KB | 0644 |
|
admins.php | File | 5.16 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 26.2 KB | 0644 |
|
blacklistemail.php | File | 1.22 KB | 0644 |
|
bounce.php | File | 11.14 KB | 0644 |
|
bouncemgt.php | File | 1.44 KB | 0644 |
|
bouncerule.php | File | 4.27 KB | 0644 |
|
bouncerules.php | File | 6.33 KB | 0644 |
|
bounces.php | File | 7.57 KB | 0644 |
|
catlists.php | File | 3.34 KB | 0644 |
|
checkbouncerules.php | File | 1.43 KB | 0644 |
|
checki18n.php | File | 3.13 KB | 0644 |
|
checkprerequisites.php | File | 1.62 KB | 0644 |
|
class.image.inc | File | 3.9 KB | 0644 |
|
class.phplistmailer.php | File | 30.73 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.67 KB | 0644 |
|
community.php | File | 3.5 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 7.85 KB | 0644 |
|
connect.php | File | 89.86 KB | 0644 |
|
convertstats.php | File | 5.83 KB | 0644 |
|
converttoutf8.php | File | 3.78 KB | 0644 |
|
cron.php | File | 3.34 KB | 0644 |
|
date.php | File | 7.65 KB | 0644 |
|
dbcheck.php | File | 3.7 KB | 0644 |
|
defaultFrontendTexts.php | File | 9.79 KB | 0644 |
|
defaultconfig.php | File | 30.66 KB | 0644 |
|
defaultplugin.php | File | 31.59 KB | 0644 |
|
defaults.php | File | 3.64 KB | 0644 |
|
defaultsystemtemplate.php | File | 15.29 KB | 0644 |
|
defaulttest.php | File | 1.23 KB | 0644 |
|
dlusers.php | File | 235 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 371 B | 0644 |
|
editattributes.php | File | 8.78 KB | 0644 |
|
editlist.php | File | 7.4 KB | 0644 |
|
eventlog.php | File | 4.68 KB | 0644 |
|
export.php | File | 6.86 KB | 0644 |
|
exportuserdata.php | File | 8.26 KB | 0644 |
|
fckphplist.php | File | 49.84 KB | 0644 |
|
gchart.php | File | 903 B | 0644 |
|
generatebouncerules.php | File | 5.51 KB | 0644 |
|
home.php | File | 6.56 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 3.09 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 2.01 KB | 0644 |
|
import.php | File | 2.75 KB | 0644 |
|
import1.php | File | 11.09 KB | 0644 |
|
import2.php | File | 34.16 KB | 0644 |
|
import3.php | File | 22.72 KB | 0644 |
|
import4.php | File | 16.86 KB | 0644 |
|
importadmin.php | File | 17.08 KB | 0644 |
|
importsimple.php | File | 7.32 KB | 0644 |
|
index.php | File | 32.82 KB | 0644 |
|
info.php | File | 1.07 KB | 0644 |
|
init.php | File | 27.36 KB | 0644 |
|
initialise.php | File | 12.05 KB | 0644 |
|
initlanguages.php | File | 867 B | 0644 |
|
languages.php | File | 21.37 KB | 0644 |
|
lib.php | File | 86.79 KB | 0644 |
|
list.php | File | 11.32 KB | 0644 |
|
listbounces.php | File | 4.13 KB | 0644 |
|
login.php | File | 6.39 KB | 0644 |
|
logout.php | File | 865 B | 0644 |
|
massremove.php | File | 2.55 KB | 0644 |
|
mclicks.php | File | 7.28 KB | 0644 |
|
members.php | File | 19.99 KB | 0644 |
|
mergeduplicates.php | File | 4.48 KB | 0644 |
|
message.php | File | 9.08 KB | 0644 |
|
messages.php | File | 26.27 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.4 KB | 0644 |
|
msgstatus.php | File | 1.27 KB | 0644 |
|
mviews.php | File | 6.27 KB | 0644 |
|
mysql.inc | File | 40 B | 0644 |
|
mysqli.inc | File | 14.02 KB | 0644 |
|
pageaction.php | File | 1.11 KB | 0644 |
|
phpListAdminAuthentication.php | File | 6.82 KB | 0644 |
|
pluginlib.php | File | 9.43 KB | 0644 |
|
plugins.php | File | 17.78 KB | 0644 |
|
preparesend.php | File | 669 B | 0644 |
|
processbounces.php | File | 35.36 KB | 0644 |
|
processqueue.php | File | 3.71 KB | 0644 |
|
readtestmail.php | File | 11.59 KB | 0644 |
|
reconcileusers.php | File | 27.71 KB | 0644 |
|
redirecttoupdater.php | File | 187 B | 0644 |
|
reindex.php | File | 1.82 KB | 0644 |
|
rsslib.php | File | 3.17 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 6.17 KB | 0644 |
|
send_core.php | File | 63.91 KB | 0644 |
|
sendemaillib.php | File | 69.84 KB | 0644 |
|
sendprepared.php | File | 4.87 KB | 0644 |
|
sessionlib.php | File | 2.7 KB | 0644 |
|
setpermissions.php | File | 2.08 KB | 0644 |
|
setup.php | File | 2.56 KB | 0644 |
|
spage.php | File | 4.35 KB | 0644 |
|
spageedit.php | File | 19.08 KB | 0644 |
|
statsmgt.php | File | 1.23 KB | 0644 |
|
statsoverview.php | File | 6.19 KB | 0644 |
|
stresstest.php | File | 4.82 KB | 0644 |
|
structure.php | File | 29.21 KB | 0644 |
|
subscribelib2.php | File | 70.22 KB | 0644 |
|
subscriberstats.php | File | 617 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 795 B | 0644 |
|
systemstats.php | File | 5.73 KB | 0644 |
|
template.php | File | 16.4 KB | 0644 |
|
templates.php | File | 3.01 KB | 0644 |
|
tests.php | File | 1.67 KB | 0644 |
|
uclicks.php | File | 6.74 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.2 KB | 0644 |
|
updatetlds.php | File | 358 B | 0644 |
|
updatetranslation.php | File | 2.51 KB | 0644 |
|
upgrade.php | File | 23.82 KB | 0644 |
|
user.php | File | 23.08 KB | 0644 |
|
usercheck.php | File | 2.55 KB | 0644 |
|
userclicks.php | File | 11.57 KB | 0644 |
|
userhistory.php | File | 8.25 KB | 0644 |
|
usermgt.php | File | 1.9 KB | 0644 |
|
users.php | File | 19.3 KB | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 635 B | 0644 |
|
viewtemplate.php | File | 1.86 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|