<?php
require_once dirname(__FILE__).'/accesscheck.php';
$msgid = empty($_GET['id']) ? 0 : sprintf('%d', $_GET['id']);
if (!$msgid) {
$req = Sql_Query(sprintf('select message.id as messageid,message.subject,count(distinct user) as numusers from %s message, %s umb where message.id = umb.message and date_add(message.entered,interval 3 month) > now() group by message.id order by message.entered desc',
$GLOBALS['tables']['message'], $GLOBALS['tables']['user_message_bounce']));
$ls = new WebblerListing($GLOBALS['I18N']->get('Choose a message'));
while ($row = Sql_Fetch_Array($req)) {
$element = $GLOBALS['I18N']->get('message').' '.$row['messageid'];
$ls->addElement($element, PageUrl2('msgbounces&id='.$row['messageid']));
$ls->addColumn($element, $GLOBALS['I18N']->get('subject'), $row['subject']);
$ls->addColumn($element, $GLOBALS['I18N']->get('# bounced'), $row['numusers']);
}
echo $ls->display();
return;
}
$req = Sql_Query(sprintf('select message.id as messageid,message.subject,umb.user as userid,count(bounce) as numbounces from %s message, %s umb where message.id = umb.message and message.id = %d and date_add(message.entered,interval 3 month) > now() group by umb.user order by message.entered desc',
$GLOBALS['tables']['message'], $GLOBALS['tables']['user_message_bounce'], $msgid));
$total = Sql_Affected_Rows();
$limit = '';
$numpp = 150;
$s = empty($_GET['s']) ? 0 : sprintf('%d', $_GET['s']);
if ($total > 500 && $_GET['type'] != 'dl') {
// print Paging2('listbounces&id='.$listid,$total,$numpp,'Page');
$listing = sprintf($GLOBALS['I18N']->get('Listing %s to %s'), $s, $s + $numpp);
$limit = "limit $s,".$numpp;
echo $total.' '.$GLOBALS['I18N']->get(' Total').'</p>';
printf('<table class="bouncesListing" border="1"><tr><td colspan=4 align=center>%s</td></tr><tr><td>%s</td><td>%s</td><td>
%s</td><td>%s</td></tr></table><hr/>',
$listing,
PageLink2('msgbounces&id='.$msgid, '<<', 's=0'),
PageLink2('msgbounces&id='.$msgid, '<', sprintf('s=%d', max(0, $s - $numpp))),
PageLink2('msgbounces&id='.$msgid, '>', sprintf('s=%d', min($total, $s + $numpp))),
PageLink2('msgbounces&id='.$msgid, '>>', sprintf('s=%d', $total - $numpp)));
$req = Sql_Query(sprintf('select message.id as messageid,message.subject,umb.user as userid,count(bounce) as numbounces from %s message, %s umb where message.id = umb.message and message.id = %d and date_add(message.entered,interval 3 month) > now() group by umb.user order by message.entered desc %s',
$GLOBALS['tables']['message'], $GLOBALS['tables']['user_message_bounce'], $msgid, $limit));
}
echo '<p class="button">'.PageLink2('msgbounces', 'Select another message');
echo ' '.PageLink2('msgbounces&type=dl&&id='.$msgid, 'Download emails');
echo '</p>';
if ($_GET['type'] == 'dl') {
ob_end_clean();
header('Content-type: text/plain');
$filename = 'Bounces on message '.$msgid;
header("Content-disposition: attachment; filename=\"$filename\"");
}
$currentmsg = 0;
$ls = new WebblerListing('');
while ($row = Sql_Fetch_Array($req)) {
if ($currentmsg != $row['messageid']) {
if ($_GET['type'] != 'dl') {
echo $ls->display();
}
$currentmsg = $row['messageid'];
flush();
$ls = new WebblerListing($row['subject']);
}
$userdata = Sql_Fetch_Array_Query(sprintf('select * from %s where id = %d',
$GLOBALS['tables']['user'], $row['userid']));
if ($_GET['type'] == 'dl') {
echo $userdata['email']."\n";
}
$ls->addElement($row['userid'], PageUrl2('user&id='.$row['userid']));
$ls->addColumn($row['userid'], $GLOBALS['I18N']->get('email'), $userdata['email']);
$ls->addColumn($row['userid'], $GLOBALS['I18N']->get('# bounces'), $row['numbounces']);
}
if ($_GET['type'] != 'dl') {
echo $ls->display();
} else {
exit;
}