1<?php
2verifyCsrfGetToken();
3
4if (!empty($_SESSION['LoadDelay'])) {
5    sleep($_SESSION['LoadDelay']);
6}
7$status = '';
8
9if (isset($_GET['domain'])) {
10    //Replace everything except alphanumerical chars and period.
11    $domain = preg_replace('@[^0-9a-z\.]+@i', ' ',  $_GET['domain']);
12}
13if (isset($_GET['bounces'])) {
14    //make sure that bounces is integer.
15    $bounces = (int) $_GET['bounces'];
16}
17
18$ls = new WebblerListing(s('Domain statistics'));
19$ls->setElementHeading('Domain');
20
21$sent = Sql_Query(sprintf("SELECT
22  COUNT(*)
23FROM
24  (
25  SELECT
26    COUNT(email)
27  FROM
28    %s AS u
29  INNER JOIN
30    %s AS m ON u.id = m.userid
31  WHERE
32STATUS
33  = 'sent' AND email LIKE '%%$domain'
34GROUP BY
35  email
36) t", $GLOBALS['tables']['user'],
37    $GLOBALS['tables']['usermessage'], 'sent'));
38
39while ($row = Sql_Fetch_Row($sent)) {
40    $sent = $row[0];
41}
42
43$viewed = Sql_Query(sprintf("SELECT
44  COUNT(*)
45FROM
46  (
47  SELECT
48    COUNT(email)
49  FROM
50    %s AS u
51  INNER JOIN
52    %s AS m ON u.id = m.userid
53  WHERE
54STATUS
55  IS NOT NULL AND email LIKE '%%$domain'
56GROUP BY
57  email
58) t", $GLOBALS['tables']['user'],
59    $GLOBALS['tables']['usermessage']));
60
61while ($row = Sql_Fetch_Row($viewed)) {
62    $viewed = $row[0];
63}
64
65$bounceRate=  sprintf('%0.2f', $bounces / $sent * 100)."%";
66$viewRate=  sprintf('%0.2f', $viewed / $sent * 100)."%";
67
68$ls->addElement($domain);
69$ls->addColumn(
70    $domain,
71    s('Total bounced emails'),
72    number_format($bounces));
73$ls->addColumn(
74    $domain,
75    s('Total sent emails'),
76    number_format($sent));
77$ls->addColumn(
78    $domain,
79    s('Bounce rate'),
80    $bounceRate);
81$ls->addColumn(
82    $domain,
83    s('View rate').Help("viewrate"),
84    $viewRate);
85$status .= $ls->display();
86