array( 'title' => 'Newsletter Send Statistics', 'help' => 'View Statistics about newsletter sending, including number of recipients, date sent, opened by and more.' ), 2 => array( 'title' => 'Subscriber Statistics', 'help' => 'View statistics about individual subscribers, including date of subscription, links opened and more.' ), 3 => array( 'title' => 'Subscriber Dates', 'help' => 'View number of subscriptions per year, month and day.' ), 4 => array( 'title' => 'Autoresponder Statistics', 'help' => 'View statistics about autoresponders, including number of recipients, date sent, opened by and more.' ), 5 => array( 'title' => 'User Statistics', 'help' => 'View statistics about each control panel user / administator including number of emails sent, date of sending and more.' ), 6 => array( 'title' => 'Mailing List Statistics', 'help' => 'View statistics about each mailing list, including number of subscribers, active subscribers, confirmed subscribers and more' ), 7 => array( 'title' => 'Newsletter Open Statistics', 'help' => 'View which subscribers opened a particular newsletter' ), 8 => array( 'title' => 'Link Click-through Statistics', 'help' => 'View statistics about links and click-throughs' ) ); if (!$Action) { $radio_button = ''; foreach($REPORT_TYPES as $id => $details) { $radio_button .= $id . '->' . $details['title'] . ';'; } $radio_button = substr($radio_button, 0, -1); $FORM_ITEMS[$FORM_REQUIRED_ITEM . 'Statistics Report']='radio|ReportType:1:' . $radio_button; foreach($REPORT_TYPES as $id => $details) { $HELP_ITEMS['ReportType'.$id]['Title'] = $details['title']; $HELP_ITEMS['ReportType'.$id]['Content'] = $details['help']; } $FORM_ITEMS[-1]='submit|Next »:1-stats'; $FORM=new AdminForm; $FORM->title='Reporting'; $FORM->items=$FORM_ITEMS; $FORM->action=MakeAdminLink('stats?Action=Step2'); $FORM->MakeForm('Choose Report Type'); $FORM->output = 'Select a statistics report type below and click "Next" to continue.

' . $FORM->output; $OUTPUT = MakeBox('Statistics',$FORM->output); $OUTPUT .= ' '; } if ($Action != '') $OUTPUT = ""; if ($Action == 'Step2') { if ($ReportType != 5) { // if we're not viewing admin or link stats... //select ListID form! $lists=mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists ORDER BY ListName ASC"); $alllists = ''; $foundlist = false; while($l=mysql_fetch_assoc($lists)) { $foundlist = true; $l = stripslashes_array($l); if(AllowList($l['ListID'])) { if ($CURRENTADMIN['DisplaySummaries']) { $numSubs = (int)mysql_result(mysql_query("SELECT COUNT(*) from " . $TABLEPREFIX . "members where ListID=" . addslashes($l['ListID'])), 0, 0); if($numSubs == 1) $subs = "1 subscriber"; else $subs = number_format($numSubs, 0) . " subscribers"; $subs = " (" . $subs . ")"; } else { $subs = ""; } $alllists.=$l['ListID']."->".$l['ListName']."$subs;"; } } if ($alllists == '') { $errormsg = "Sorry, you don't have access to any lists."; if (!$foundlist) $errormsg = 'Sorry, no mailing lists have been created.'; $OUTPUT .= MakeErrorBox("No access", $errormsg); } else { $heading = 'Before you view statistics, please choose a mailing list to work with.'; $FORM_ITEMS[$FORM_REQUIRED_ITEM . 'Choose a mailing list']='select|ListID:5:'.$alllists; $HELP_ITEMS['ListID']['Title'] = 'Mailing List'; $HELP_ITEMS['ListID']['Content'] = 'Which mailing list would you like to view statistics for? Simply choose it from this list.'; $FORM_ITEMS[-1]='submit|Next »:1-stats'; $FORM=new AdminForm; $FORM->title='Reporting'; $FORM->items=$FORM_ITEMS; $FORM->action=MakeAdminLink('stats&Action=Step3&ReportType='.$ReportType); $FORM->MakeForm('Select a mailing list'); $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ')', $heading . $FORM->output); $OUTPUT .= ''; } } if ($ReportType == 5) { $alladmins = ''; $admin_count = 0; $qry = "SELECT * FROM " . $TABLEPREFIX . "admins"; if (!$CURRENTADMIN['Root']) $qry .= " WHERE adminid='" . $CURRENTADMIN['AdminID'] . "'"; $qry .= " ORDER BY AdminName"; $admins_result = mysql_query($qry); while($u = mysql_fetch_assoc($admins_result)) { $u = stripslashes_array($u); $admin_count++; $adminname = ($u['AdminName']) ? ' (' . $u['AdminName'] . ')' : ''; $alladmins .= $u['AdminID'] . '->' . $u['Username'] . $adminname . ';'; } $FORM_ITEMS[$FORM_REQUIRED_ITEM . 'Select a user']='select|AdminID:5:'.$alladmins; $HELP_ITEMS['AdminID']['Title'] = 'Select a user'; $HELP_ITEMS['AdminID']['Content'] = 'Which user would you like to view statistics for? Simply choose it from this list.'; $FORM_ITEMS[-1]='submit|Next »:1-stats'; $FORM=new AdminForm; $FORM->title='Reporting'; $FORM->items=$FORM_ITEMS; $FORM->action=MakeAdminLink('stats&Action=Step3&ReportType='.$ReportType); $FORM->MakeForm('Select a user'); $heading = "Select a user to view statistics about that users activities. Click 'Next' to continue."; $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ')', $heading . $FORM->output); $OUTPUT .= ' '; } } if ($Action == 'Step3') { if ($ReportType != 5) { $ReportName = "'" . stripslashes(mysql_result(mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '".addslashes($ListID)."'"), 0, 0)) . "'"; } $other_heading = ''; switch($ReportType) { case 1: // Send Statistics $info = SendStatistics($ListID); $other_heading = 'The following lists information regarding the newsletters sent for the specified list. Select a newsletter for more detailed statistics.'; break; case 2: // Subscriber Statistics $info = SubscriberStatsForm($ListID); break; case 3: // Signup Stats $info = SignUpStats($ListID); $other_heading = 'The following lists the number of subscribers per year for the specified mailing list. Select a year to view subscribers per month

'; break; case 4: // Autoresponder Stats $info = ViewAutoresponderStats($ListID); $other_heading = 'The following lists information regarding the autoresponders setup for the specified list. Select an autoresponder for more detailed statistics.'; break; case 5: // admin statistics $result = mysql_query("SELECT AdminName, Username FROM " . $TABLEPREFIX . "admins WHERE AdminID='" . addslashes($_REQUEST['AdminID']) . "'"); $details = stripslashes_array(mysql_fetch_assoc($result)); $ReportName = "'" . $details['Username']; if ($details['AdminName'] != '') $ReportName .= ' - ' . $details['AdminName']; $ReportName .= "'"; $info = ViewAdminStats($_REQUEST['AdminID']); $other_heading = 'The following lists the number of emails sent by the specified user per month. Select a month to view daily statistics

'; break; case 6: // List statistics $info = ViewListStatistics($ListID); $other_heading = 'The following lists information regarding the selected mailing list.

'; break; case 7: $ReportName = 'Mailing List ' . $ReportName; $info = ViewOpenStats($ListID); break; case 8: $info = ViewClickStats($ListID); break; } // $button = ""; $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ' for ' . $ReportName . ')', $other_heading . $info); } if ($Action == 'Step4') { $HaveClickedLink = (isset($_REQUEST['HaveClickedLink'])) ? $_REQUEST['HaveClickedLink'] : ''; $DisplayPage = (isset($_REQUEST['DisplayPage'])) ? $_REQUEST['DisplayPage'] : 0; $OffSet = (isset($_REQUEST['OffSet'])) ? $_REQUEST['OffSet'] : 0; switch($View) { case 'Send': list($listname, $results) = ViewDetailedSend($_GET['SendID']); $OUTPUT .= MakeBox('Statistics (' .$REPORT_TYPES[$ReportType]['title'] . ' for \'' . $listname . '\')', $results); $backlink = MakeAdminLink("stats?Action=Step3&ReportType=" . $ReportType . "&ListID=" . $ListID); if (isset($_GET['From']) && $_GET['From'] == 'Admin') { $backlink = MakeAdminLink('stats?Action=Step4&ReportType=5&View=Admin&AdminID='.$_GET['AdminID'].'&Month='.$_GET['Month']); } break; case 'OpenStats': $ListID = $_GET['ListID']; $page = (isset($_GET['Page'])) ? $_GET['Page'] : 1; $heading = 'The following report provides information on how many subscribers opened a particular newsletter.
This only applies to HTML Subscribers. Text Subscribers do not get tracked.


'; list($listname, $emailname, $results) = ViewDetailedOpenStats($_GET['SendID'], $ListID, $page); $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ' for List \'' . stripslashes($listname) . '\', Newsletter \'' . $emailname . '\')', $heading . $results); break; case 'Signups': $heading = "The following lists the number of subscribers per month for the specified mailing list. Select a month to view subscribers per day

"; list($listname, $results) = ViewDetailedSignups($_GET['ListID'], $_GET['Year']); $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ' for \'' . stripslashes($listname) . '\')', $heading . $results); $backlink = MakeAdminLink("stats?Action=Step3&ReportType=" . $ReportType . "&ListID=" . $ListID); break; case 'LinkClicks': $heading = 'The following report provides information on how many links are in this newsletter and how many clicks each link has received

'; list($emailname, $results) = ViewDetailedClicks($_GET['ListID'], $_GET['ComposedID']); $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ' for \'' . stripslashes($emailname) . '\')', $heading . $results); break; case 'Auto': list($listname, $results) = ViewDetailedResponder($_GET['AutoResponderID']); $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ' for \'' . $listname . '\')', $results); break; case 'Admin': list($adminname, $results) = ViewDetailedAdmin($_GET['AdminID'], $_GET['Month']); $heading = "The following lists the number of emails sent by the specified user per day. Select a date to view details of the sent newsletter

"; $OUTPUT .= MakeBox('Statistics (' . $REPORT_TYPES[$ReportType]['title'] . ' for \'' . $adminname . '\')', $heading . $results); break; case 'SubscriberStats': $ListName = "'" . stripslashes_array(mysql_result(mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '".addslashes($ListID)."'"), 0, 0)) . "'"; $Confirmed = (isset($_REQUEST['Confirmed'])) ? $_REQUEST['Confirmed'] : 1; $Email = (isset($_REQUEST['Email'])) ? $_REQUEST['Email'] : ''; $Fields = (isset($_REQUEST['Fields'])) ? $_REQUEST['Fields'] : array(); $Format = (isset($_REQUEST['Format'])) ? $_REQUEST['Format'] : 1; $HaveClickedLink = (isset($_REQUEST['HaveClickedLink'])) ? $_REQUEST['HaveClickedLink'] : ''; $PerPage = (isset($_REQUEST['PerPage'])) ? $_REQUEST['PerPage'] : 20; $Status = (isset($_REQUEST['Status'])) ? $_REQUEST['Status'] : 1; $Members=ReturnMembers($ListID,$Email,$Status,$Confirmed,$Fields,$HaveClickedLink,$Format, false, array(), true); $backlink = MakeAdminLink('stats?Action=Step3&ReportType=2&ListID=' . $ListID); if (!$Members) { $report = "No subscribers were found for the selected list. Click on the button below to search again.

"; } else { $TotalResult = $Members; if ((int)$PerPage <= 0) $PerPage = 20; if($DisplayPage == "") $DisplayPage = 0; if($TotalResult<=$PerPage){ $Pages=1; }else{ $Pages=ceil($TotalResult/$PerPage); } $urldata = EncodeFields($Fields); $urldata.="PerPage=$PerPage&"; $urldata.="Status=$Status&"; $urldata.="Confirmed=$Confirmed&"; $urldata.="Email=$Email&Format=$Format&"; $urldata.="HaveClickedLink=$HaveClickedLink&"; // so we don't have to work out complex regular expressions to take out the order and direction later, save these for the sorting URL's we'll create below. $email_order_urldata = $subscribed_order_urldata = $urldata; if (isset($_GET['Order'])) $urldata .= "Order=" . $_GET['Order'] . "&"; if (isset($_GET['Order']) && isset($_GET['Direction'])) $urldata .= "Direction=" . $_GET['Direction'] . "&"; $OffSet = (isset($_REQUEST['OffSet'])) ? $_REQUEST['OffSet'] : 0; $Total = number_format($TotalResult, 0) . ($TotalResult == 1 ? ' result' : ' results'); $lastOffset = 0; $report = "Your search returned " . $Total . ". Currently displaying page " . number_format(($DisplayPage+1), 0) . " of " . number_format($Pages, 0) . " pages.

"; $report .= ""; $report .= "

"; $base_link = 'stats?Action=Step4&View=SubscriberStats&ListID=' . $ListID . '&' . $urldata; if($Pages > 1) { $report .= ' '; } $email_order_urldata = 'stats?Action=Step4&View=SubscriberStats&ListID=' . $ListID . '&' . $email_order_urldata; $subscribed_order_urldata = 'stats?Action=Step4&View=SubscriberStats&ListID=' . $ListID . '&' . $subscribed_order_urldata; $email_order_url = MakeAdminLink($email_order_urldata . '&Order=Email'); $subscribed_order_url = MakeAdminLink($subscribed_order_urldata . '&Order=SubscribeDate'); $report.=' '; $limit_results = array(); $limit_results['Start'] = ($DisplayPage*$PerPage); $limit_results['Number'] = $PerPage; $order_results = (isset($_GET['Order'])) ? $_GET['Order'] : 'Email'; $direction = (isset($_GET['Direction'])) ? $_GET['Direction'] : 'Up'; $member_list = ReturnMembers($ListID,$Email,$Status,$Confirmed,$Fields,$HaveClickedLink,$Format, true, array(), false, $limit_results, $order_results, $direction); foreach($member_list as $memberid){ $member=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "members WHERE MemberID='".addslashes($memberid)."'")); $report .= ' '; } $report .= '
'; if($DisplayPage > 0) { $report .= ' «« |'; } if($DisplayPage > 0){ $report.=' Prev |'; } $sPos = $DisplayPage - 10; if($sPos < 0) $sPos = 0; $ePos = $DisplayPage + 10; if($ePos > $Pages) $ePos = $Pages; for($i = $sPos; $i < $ePos; $i++) { if($DisplayPage != $i) $report .= ' ' . ($i+1) . ' |'; else $report .= ' ' . ($i+1) . ' |'; $lastOffset = ($i*$PerPage); } if($DisplayPage < $Pages-1){ $report.=' Next |'; } if($Pages > 1) { $report .= ' »»'; } $report .= '
  Email Address Sort UpSort Down Date Subscribed Sort UpSort Down Status Confirmed Action
' . $member["Email"] . ' ' . DisplayDate($member["SubscribeDate"]) . ' '; if($member["Status"] == 1) $report .= 'Active'; else $report .= 'Inactive'; $report .= ' '; if($member["Confirmed"] == 1) $report .= 'Yes'; else $report .= 'No'; $report .= ' '; $link = "stats?Action=Step4&View=ViewSubscriber&MemberID=" . $memberid . "&PerPage=$PerPage&DisplayPage=$DisplayPage&ListID=$ListID" . "&" . $urldata; $report .= MakeLink($link, "View") . "      "; $report .= '
'; } $OUTPUT.=MakeBox("Statistics (Subscriber statistics for $ListName)", $report); break; // end View==SubscriberStats case 'ViewSubscriber': $member = load_member($_GET['MemberID'], $_GET['ListID']); $report_title = "email " . $member['Email'] . " on mailing list '" . stripslashes_array(mysql_result(mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '".addslashes($ListID)."'"), 0, 0)) . "'"; $Confirmed = (isset($_REQUEST['Confirmed'])) ? $_REQUEST['Confirmed'] : 1; $Email = (isset($_REQUEST['Email'])) ? $_REQUEST['Email'] : ''; $Fields = (isset($_REQUEST['Fields'])) ? $_REQUEST['Fields'] : array(); $Format = (isset($_REQUEST['Format'])) ? $_REQUEST['Format'] : 1; $HaveClickedLink = (isset($_REQUEST['HaveClickedLink'])) ? $_REQUEST['HaveClickedLink'] : 1; $PerPage = (isset($_REQUEST['PerPage'])) ? $_REQUEST['PerPage'] : 20; $Status = (isset($_REQUEST['Status'])) ? $_REQUEST['Status'] : 1; $base_url_data = 'ReportType=2&ListID=' . $ListID . '&'; $base_url_data .= "PerPage=$PerPage&"; $base_url_data .= "Status=$Status&"; $base_url_data .= "Confirmed=$Confirmed&"; $base_url_data .= "Email=$Email&Format=$Format&"; $base_url_data .= "DisplayPage=$DisplayPage&OffSet=$OffSet"; $base_url_data .= "HaveClickedLink=$HaveClickedLink&"; $base_url_data .= EncodeFields($Fields) . '&'; if (isset($_GET['Order'])) $base_url_data .= 'Order=' . $_GET['Order'] . '&'; if (isset($_GET['Order']) && isset($_GET['Direction'])) $base_url_data .= 'Direction=' . $_GET['Direction'] . '&'; if (isset($_GET['Back'])) { $urldata = 'stats?Action=Step4&View=ViewSubscriber&MemberID=' . $_GET['Back'] . '&'; } else { $urldata = 'stats?Action=Step4&View=SubscriberStats&'; } $urldata .= $base_url_data; $backlink = MakeAdminLink($urldata); $report = "

"; $report .= ""; $member_format = ($member['Format'] == 1) ? 'text' : 'html'; $report .= ' '; $report .= "
  Subscriber Details
Email:' . $member['Email'] .'
Subscribed As:' . $member_format . ' recipient
Date Subscribed:' . DisplayDate($member['SubscribeDate']) . '

"; $report .= ""; $report.=' '; $link_query = "SELECT URL, TimeStamp, MemberID, EmailName FROM " . $TABLEPREFIX . "links lnk LEFT OUTER JOIN " . $TABLEPREFIX . "link_clicks lc ON (lnk.LinkID=lc.LinkID) LEFT JOIN " . $TABLEPREFIX . "lists l ON (lc.ListID=l.ListID) LEFT JOIN " . $TABLEPREFIX . "composed_emails ce ON (lc.ComposedID=ce.ComposedID) WHERE lc.ListID='" . addslashes($_GET['ListID']) . "' AND lc.MemberID='" . addslashes($_GET['MemberID']) . "'"; # if (!$CURRENTADMIN['Root']) $link_query .= " AND l.AdminID='" . addslashes($CURRENTADMIN['AdminID']) . "'"; $link_query .= " ORDER BY lnk.URL"; $clicked_links_result = mysql_query($link_query); if (mysql_num_rows($clicked_links_result) > 0) { while($clicked_link = mysql_fetch_assoc($clicked_links_result)) { $report .= ' '; $report .= ''; $clicked = ($clicked_link['TimeStamp']) ? DisplayDate($clicked_link['TimeStamp']) : 'Never'; $report .= ' '; } } else { $report .= ''; } $report .= '
Visited Links
Link: ' . $clicked_link['URL'] . '
Newsletter' . $clicked_link['EmailName'] . '
Date Clicked:' . $clicked . '
Link:Hasn\'t opened any links
Newsletter: n/a
Date Clicked: n/a

'; $report .= ""; $report.=' '; $email_query = "SELECT e.EmailName, eo.TimeStamp FROM " . $TABLEPREFIX . "email_opens eo LEFT JOIN " . $TABLEPREFIX . "sends s ON (s.sendID=eo.sendID) LEFT JOIN " . $TABLEPREFIX . "composed_emails e ON (s.ComposedID=e.ComposedID) WHERE eo.MemberID='" . addslashes($_GET['MemberID']) . "' AND s.ListID='" . addslashes($_GET['ListID'])."' ORDER BY EmailName, TimeStamp"; $email_result = mysql_query($email_query); if (mysql_num_rows($email_result) > 0) { while($opened_email = mysql_fetch_assoc($email_result)) { $emailname = ($opened_email['EmailName']) ? $opened_email['EmailName'] : 'Unknown newsletter (has been deleted)'; $report .= ' '; } } else { $report .= ' '; } $report .= '
Opened Newsletters Date Opened
' . $emailname . ' ' . DisplayDate($opened_email['TimeStamp']) . '
Hasn\'t opened any newsletters.n/a
'; $heading = "The following lists information regarding the subscriber for the specified list.

"; $OUTPUT .= MakeBox("Statistics (Subscriber Statistics for " . $report_title . ")", $heading . $report); break; } } if ($Action == 'Step5') { switch($_GET['View']) { case 'Signups': $heading = "The following lists the number of subscribers per day for the specified mailing list.

"; list($listname, $report) = DisplayMonthlySignups($_GET['ListID'], $_GET['Year'], $_GET['Month']); $OUTPUT.=MakeBox("Statistics (Subscriber dates for '" . stripslashes($listname) . "')", $heading . $report); break; } } function ViewDetailedClicks($ListID=0, $ComposedID=0) { global $TABLEPREFIX; $emailname = stripslashes(mysql_result(mysql_query("SELECT EmailName FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID='" . addslashes($ComposedID) . "'"), 0, 0)); $report = ''; $report .= ''; $qry = "SELECT LinkID, URL FROM " . $TABLEPREFIX . "links WHERE LinkType='send' AND ComposedID='" . addslashes($ComposedID) . "' ORDER BY URL"; $result = mysql_query($qry); while($row = mysql_fetch_assoc($result)) { $report .= ''; $link_count_query = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "link_clicks WHERE LinkID='" . addslashes($row['LinkID']) . "' AND LinkType='send' AND ListID='" . addslashes($ListID) . "' AND ComposedID='" . addslashes($ComposedID) . "'"; $link_count_check = mysql_result(mysql_query($link_count_query), 0, 0); $report .= ''; } $report .= '
LinkNumber of Clicks
' . $row['URL'] . '' . number_format($link_count_check, 0) . '
'; return array($emailname, $report); } function ViewOpenStats($ListID=0) { global $TABLEPREFIX, $CURRENTADMIN, $ROOTURL; $listname_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID='" . addslashes($ListID) . "'"); $listname = mysql_result($listname_result, 0, 0); $qry = "SELECT SendID, TrackOpens, DateStarted, TotalRecipients, HTMLRecipients, ComposedID FROM " . $TABLEPREFIX . "sends s WHERE s.EmailsSent > 0 AND s.ListID='" . addslashes($ListID) . "' ORDER BY DateStarted DESC"; $result = mysql_query($qry); if (mysql_num_rows($result) == 0) { return 'No newsletters have been sent'; } $report = ''; $report .= ''; $base_link = 'stats?Action=Step4&View=OpenStats&ListID=' . $ListID . '&ReportType=7'; while($row = mysql_fetch_assoc($result)) { $open_qry = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "email_opens WHERE SendID='" . addslashes($row['SendID']) . "'"; $newsletter_name_qry = "SELECT EmailName FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID='" . addslashes($row['ComposedID']) . "'"; $newsletter_name_result = mysql_query($newsletter_name_qry); if (mysql_num_rows($newsletter_name_result) == 0) { $newsletter_name = 'Unknown newsletter, has been deleted.'; } else { $newsletter_name = mysql_result($newsletter_name_result, 0, 0); } $num_opens = mysql_result(mysql_query($open_qry), 0, 0); if ($row['TrackOpens'] == 0 || $num_opens == 0 || $row['HTMLRecipients'] == 0) { $view_link = 'View'; } else { $view_link = 'View'; } $percent = number_format(($num_opens / $row['TotalRecipients'] * 100), 2); $report .= ''; } $report .= '
 NewsletterDate SentTotal RecipientsHTML RecipientsNumber of OpensAction
' . stripslashes($newsletter_name) . '' . DisplayDate($row['DateStarted']) . '' . number_format($row['TotalRecipients'], 0) . '' . number_format($row['HTMLRecipients'], 0) . '' . number_format($num_opens, 0) . ' (' . $percent . ' %)' . $view_link . '
'; return $report; } function ViewClickStats($ListID=0) { global $TABLEPREFIX, $CURRENTADMIN, $ROOTURL; $listname_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID='" . addslashes($ListID) . "'"); $listname = mysql_result($listname_result, 0, 0); $qry = "SELECT DISTINCT ce.ComposedID, EmailName FROM " . $TABLEPREFIX . "composed_emails ce, " . $TABLEPREFIX . "sends s WHERE s.ComposedID=ce.ComposedID AND s.EmailsSent > 0 AND s.ListID='" . addslashes($ListID) . "'"; if (!$CURRENTADMIN['Manager']) $qry .= " AND AdminID='" . addslashes($CURRENTADMIN['AdminID']) . "'"; $qry .= " ORDER BY EmailName"; $result = mysql_query($qry); if (mysql_num_rows($result) == 0) { return 'No newsletters have been sent'; } $report = ''; $report .= ''; $base_link = 'stats?Action=Step4&View=LinkClicks&ListID=' . $ListID . '&ReportType=8'; while($row = mysql_fetch_assoc($result)) { $link_qry = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "links WHERE ComposedID='" . addslashes($row['ComposedID']) . "' AND LinkType='send'"; $num_links = mysql_result(mysql_query($link_qry), 0, 0); $link_count_qry = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "link_clicks WHERE ComposedID='" . addslashes($row['ComposedID']) . "' AND LinkType='send' AND ListID='" . addslashes($ListID) . "'"; $num_clicks = mysql_result(mysql_query($link_count_qry), 0, 0); if ($num_links == 0 || $num_clicks == 0) { $view_link = 'View'; } else { $view_link = 'View'; } $report .= ''; } $report .= '
 NewsletterNumber of LinksNumber of ClicksAction
' . $row['EmailName'] . '' . number_format($num_links, 0) . '' . number_format($num_clicks, 0) . '' . $view_link . '
'; return $report; } function ViewListStatistics($ListID=0) { global $TABLEPREFIX; $listname_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID='" . addslashes($ListID) . "'"); $listname = mysql_result($listname_result, 0, 0); $query = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "members WHERE ListID='" . addslashes($ListID) . "'"; $total_subscribers = mysql_result(mysql_query($query), 0, 0); $query = "SELECT Format, COUNT(*) AS Result FROM " . $TABLEPREFIX . "members WHERE ListID='" . addslashes($ListID) . "' GROUP BY Format"; $result = mysql_query($query); $text_subscribers = $html_subscribers = 0; while($row = mysql_fetch_assoc($result)) { if ($row['Format'] == 1) $text_subscribers = $row['Result']; if ($row['Format'] == 2) $html_subscribers = $row['Result']; } $query = "SELECT Status, COUNT(*) AS Result FROM " . $TABLEPREFIX . "members WHERE ListID='" . addslashes($ListID) . "' GROUP BY Status"; $result = mysql_query($query); $active_subscribers = $inactive_subscribers = 0; while($row = mysql_fetch_assoc($result)) { if ($row['Status'] == 0) $inactive_subscribers = $row['Result']; if ($row['Status'] == 1) $active_subscribers = $row['Result']; } $query = "SELECT Confirmed, COUNT(*) AS Result FROM " . $TABLEPREFIX . "members WHERE ListID='" . addslashes($ListID) . "' GROUP BY Confirmed"; $result = mysql_query($query); $confirmed_subscribers = $unconfirmed_subscribers = 0; while($row = mysql_fetch_assoc($result)) { if ($row['Confirmed'] == 0) $unconfirmed_subscribers = $row['Result']; if ($row['Confirmed'] == 1) $confirmed_subscribers = $row['Result']; } $report = ''; $report .= '
Mailing List Details
Total Subscribers: ' . number_format($total_subscribers, 0) . '
Text Subscribers: ' . number_format($text_subscribers, 0) . '
HTML Subscribers: ' . number_format($html_subscribers, 0) . '
Active Subscribers: ' . number_format($active_subscribers, 0) . '
Inactive Subscribers: ' . number_format($inactive_subscribers, 0) . '
Confirmed Subscribers: ' . number_format($confirmed_subscribers, 0) . '
Unconfirmed Subscribers: ' . number_format($unconfirmed_subscribers, 0) . '
'; return $report; } function ViewDetailedSignups($ListID=0, $Year=0) { global $TABLEPREFIX, $ROOTURL; $listname_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID='" . addslashes($ListID) . "'"); $listname = mysql_result($listname_result, 0, 0); $query = "SELECT COUNT(*) AS SignupCount, MONTH(FROM_UNIXTIME(SubscribeDate)) as Month from " . $TABLEPREFIX . "members WHERE YEAR(FROM_UNIXTIME(SubscribeDate)) = '" . addslashes($Year) . "' AND ListID='" . addslashes($ListID) . "' GROUP BY Month"; $result = mysql_query($query); $per_month_results = array_fill(1,12,'0'); while($row = mysql_fetch_assoc($result)) { $per_month_results[$row['Month']] = $row['SignupCount']; } $base_link = 'stats?Action=Step5&View=Signups&Year=' . $Year . '&ListID=' . $ListID; $report = ''; $report .= ''; $m = 1; while($m <= 12) { $this_month = ($per_month_results[$m] > 0) ? $per_month_results[$m] : 0; $date = date('M Y', mktime(1,0,0,$m,1,$Year)); $link = $base_link . '&Month=' . $m; $report .= ''; $report .= ''; $report .= ''; $m++; } $report .= '
 MonthNumber of SubscribersAction
'; $report .= $date; $report .= ''; $report .= number_format($this_month, 0); $report .= ''; if ($this_month > 0) { $report .= 'View'; } else { $report .= 'View'; } $report .= '
'; return array($listname, $report); } function DisplayMonthlySignups($ListID=0, $Year=0, $Month=0) { global $TABLEPREFIX; $listname_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID='" . addslashes($ListID) . "'"); $listname = mysql_result($listname_result, 0, 0); $signupcount_query = "SELECT DAYOFMONTH(FROM_UNIXTIME(SubscribeDate)) AS dom, COUNT(*) AS signupcount FROM " . $TABLEPREFIX . "members WHERE YEAR(FROM_UNIXTIME(SubscribeDate)) = '" . addslashes($Year) . "' AND ListID='" . addslashes($ListID) . "' AND MONTH(FROM_UNIXTIME(SubscribeDate))='" . addslashes($Month) . "' GROUP BY dom"; $per_month_result = array_fill(1,31,'0'); $signupcount_result = mysql_query($signupcount_query); while($row = mysql_fetch_assoc($signupcount_result)) { $per_month_result[$row['dom']] = $row['signupcount']; } $report = ''; $thismonth = mktime (0, 0, 0, $Month, 1, $Year); $fill_line = ''; $report .= ''; $report .= ''; $report .= '
 
'; $report .= date('F', $thismonth) . ', ' . $Year; $report .= '
'; $report .= ' '; $report .= $fill_line; $report .= ''; $firstday = date('w', mktime(0,0,0, $Month, 1, $Year)); $per_week_report = ''; for ($fill = 0; $fill < $firstday; $fill++) { $report .= ''; $per_week_report .= ''; } $col = $fill; $numdays = date('t', $thismonth); for ($day = 1; $day <= $numdays; $day++) { $col++; $report .= ''; $report .= ''; if ($col % 7 == 0) { $report .= ''; $report .= ''; $report .= $per_week_report; $report .= ''; $report .= $fill_line; $report .= ''; $per_week_report = ''; } } $fillstart = ($col % 7); if ($fillstart > 0) { for ($fill = $fillstart; $fill < 7; $fill++) { $report .= ''; $per_week_report .= ''; } $report .= '' . $per_week_report . ''; } else { $report .= ''; } $report .= '
Sun Mon Tue Wed Thu Fri Sat
  '; $thisday = mktime(0,0,0, $Month, $day, $Year); $report .= date('jS', $thisday); $num = (isset($per_month_result[$day])) ? $per_month_result[$day] : 0; $per_week_report .= ''; if ($num > 0) { $per_week_report .= ' ' . number_format($num, 0) . ' '; } else { $per_week_report .= number_format($num, 0); } $per_week_report .= '
  
 
'; return array($listname, $report); } function ViewDetailedAdmin($AdminID=0, $Month=0) { global $TABLEPREFIX; $adminname_result = mysql_query("SELECT AdminName, Username FROM " . $TABLEPREFIX . "admins WHERE AdminID='" . addslashes($AdminID)."'"); $details = stripslashes_array(mysql_fetch_assoc($adminname_result)); $adminname = $details['Username'] . (($details['AdminName']) ? ' - ' . $details['AdminName'] : ''); $mailing_list = array(); $info = ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; $more_send_base = 'stats?Action=Step4&View=Send&ReportType=1&From=Admin&AdminID='.$AdminID.'&Month='.$Month; $more_auto_base = 'stats?Action=Step4&View=Auto&ReportType=4&From=Admin&AdminID='.$AdminID.'&Month='.$Month; $query = "SELECT spm.*, s.Completed FROM " . $TABLEPREFIX . "sends_permonth spm, " . $TABLEPREFIX . "sends s WHERE s.SendID=spm.SendID AND spm.AdminID='" . addslashes($AdminID) . "' AND spm.ThisMonth='" . addslashes($Month)."' AND spm.EmailsSent > 0 AND s.DateStarted != 0 ORDER BY spm.SendID DESC"; $stats_result = mysql_query($query); while($stats = mysql_fetch_assoc($stats_result)) { // get the mailing list name. if (!in_array($stats['ListID'], array_keys($mailing_list))) { $mailinglist_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '" . addslashes($stats['ListID'])."'"); if (mysql_num_rows($mailinglist_result) > 0) { $MailingList = stripslashes(mysql_result($mailinglist_result, 0, 0)); } else { $MailingList = "Unknown Mailing List. Has been deleted."; } $mailing_list[$stats['ListID']] = $MailingList; } else { $MailingList = $mailing_list[$stats['ListID']]; } $more_stats = MakeAdminLink($more_send_base . '&SendID=' . $stats['SendID']); $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; } $info .= '
DateEmails SentMailing ListStatusSend Details
' . DisplayDate($stats['TimeStamp']) . '' . number_format($stats['EmailsSent'], 0) . '' . $MailingList . ''; if ($stats['Completed'] == 1) { $info .= 'Completed'; } elseif ($stats['Completed'] == '-1') { $info .= 'Cancelled'; } else { $info .= 'Currently in progress'; } $info .= 'View
'; return array($adminname, $info); } function ViewAdminStats($AdminID=0) { global $TABLEPREFIX; $query = "SELECT ThisMonth, SUM(spm.EmailsSent) AS EmailsSent FROM " . $TABLEPREFIX . "sends_permonth spm, " . $TABLEPREFIX . "sends s WHERE s.SendID=spm.SendID AND spm.AdminID='" . addslashes($AdminID) . "' AND s.DateStarted != 0 GROUP BY ThisMonth ORDER BY ThisMonth DESC"; $result = mysql_query($query); $back_link = ''; $info = ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; if (mysql_num_rows($result) <= 0) { $info .= ''; } $more_stats_base = 'stats?Action=Step4&View=Admin&AdminID=' . $AdminID . '&ReportType=5'; while($row = mysql_fetch_assoc($result)) { $row = stripslashes_array($row); $more_stats = MakeAdminLink($more_stats_base . '&Month=' . $row['ThisMonth']); $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; } $info .= '
MonthEmails SentAction
'; $info .= 'User has not sent any newsletters.'; $info .= '
' . date('M Y', $row['ThisMonth']) . '' . number_format($row['EmailsSent'], 0) . 'View
'; $info .= $back_link; return $info; } function ViewDetailedSend($SendID=0) { global $TABLEPREFIX, $ROOTDIR, $ROOTURL; $query = "SELECT * FROM " . $TABLEPREFIX . "sends s WHERE s.SendID='" . addslashes($SendID)."'"; $search_criteria_result = mysql_query($query); $info = mysql_fetch_assoc($search_criteria_result); $search_criteria = unserialize(stripslashes($info['SearchCriteria'])); $list = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists l WHERE l.ListID='" . addslashes($info['ListID'])."'"); if (mysql_num_rows($list) > 0) { $listname = stripslashes(mysql_result($list, 0, 0)); } else { $listname = 'Unknown mailing list, has been deleted.'; } $email = mysql_query("SELECT EmailName FROM " . $TABLEPREFIX . "composed_emails e WHERE e.ComposedID='" . addslashes($info['ComposedID'])."'"); if (mysql_num_rows($email) > 0) { $emailname = stripslashes(mysql_result($email, 0, 0)); } else { $emailname = 'Unknown email, has been deleted.'; } $results = 'The newsletter \'' . $emailname . '\' was sent to the \'' . $listname . '\' list with the following details:'; if (empty($search_criteria)) { $results .= '

Search Criteria has not been saved. You are viewing statistics for a newsletter that was sent before search information was recorded.'; $search_details = ''; } else { $search_details = ''; $search_details .= 'Email address:'; $search_details .= '' . ((empty($search_criteria['Email'])) ? 'Not used' : $search_criteria['Email']) . ''; $search_details .= ''; $search_details .= ''; $search_details .= 'Active / Inactive Subscribers:'; switch(strtolower($search_criteria['Status'])) { case 'all': $active = 'Both active and inactive'; break; case 1: $active = 'Active'; break; default: $active = 'Inactive'; } $search_details .= '' . $active . ''; $search_details .= ''; switch(strtolower($search_criteria['Confirmed'])) { case 'all': $conf = 'Both confirmed and unconfirmed'; break; case 1: $conf = 'Confirmed'; break; default: $conf = 'Unconfirmed'; } $search_details .= ''; $search_details .= 'Confirmed / Unconfirmed Subscribers:'; $search_details .= '' . $conf . ''; $search_details .= ''; } $results .= "

\n"; $results .= ''; $results .= ''; $results .= ''; $results .= ''; $results .= ''; $results .= ''; $results .= ''; $results .= ''; if ($info['Completed'] == 1 || $info['Completed'] == '-1') { $results .= ''; } else { $results .= ''; } $results .= ''; if ($info['Completed'] == '-1') { $results .= ''; $results .= ''; $results .= ''; $results .= ''; } $results .= ''; $results .= ''; $results .= ''; $results .= ''; if ($info['TrackOpens']) { $opens_result = mysql_query("SELECT COUNT(*) FROM " . $TABLEPREFIX . "email_opens WHERE SendID='".addslashes($_GET['SendID'])."' AND EmailType='Send'"); $opens = mysql_result($opens_result, 0, 0); $openPercent = 0; if($info['EmailsSent'] > 0) $openPercent = floor(($opens / (int)$info['EmailsSent']) * 100); else $openPercent = '0'; // Overflow check if($opens > $info['EmailsSent']) { $opens = (int)$info['EmailsSent']; $openPercent = '100'; } if($info['HTMLRecipients'] == 0 && $opens == 0) { $openText = 'Unknown'; } else { $openText = $opens . ' (' . $openPercent . '%)'; } } else { $openText = 'Tracking was disabled'; } $results .= ''; $results .= ''; $results .= ''; $results .= ''; $results .= $search_details; if (!empty($search_criteria['Fields'])) { foreach($search_criteria['Fields'] as $id => $details) { $results .= ''; $results .= ''; $results .= ''; $results .= ''; } } if (is_file($ROOTDIR . 'temp/mail_errors.' . $SendID . '.csv')) { $results .= ''; $results .= ''; $results .= ''; $results .= ''; } $results .= '
Newsletter Send Statistics
Date Sent:' . DisplayDate($info['DateStarted']) . '
Date Finished Sending:' . DisplayDate($info['DateEnded']) . 'Not finished
 Newsletter was cancelled sending
Recipients:' . number_format($info['TextRecipients'], 0) . ' text recipients, ' . number_format($info['HTMLRecipients'], 0) . ' HTML recipients' . (($info['Completed']) ? '' : ' so far') . '
Opened By' . $openText . '
   '; $name = current(array_keys($details)); if (is_array($details[$name])) { if (isset($details[$name]['type'])) { if (isset($details[$name]['dd']) && isset($details[$name]['mm']) && isset($details[$name]['yy'])) { $field_details = ucwords($details[$name]['type']) . ' ' . $details[$name]['dd'] . '/' . $details[$name]['mm'] . '/' . $details[$name]['yy'] . '  (Format is dd/mm/yyyy)'; } else { $field_details = ' (not used)'; } } else { $field_details = '(Short Values Only)  ' . strtoupper(implode(', ', $details[$name])); } } else { $field_details = $details[$name]; } $results .= ucwords($name); $results .= '' . $field_details . '
Newsletter errors:'; if ($info['Completed'] == 0) $results .= ' (so far)'; $results .= 'View Report
'; return array($listname, $results); } function ViewDetailedResponder($AutoID=0) { global $TABLEPREFIX; $query = "SELECT * FROM " . $TABLEPREFIX . "autoresponders a WHERE a.AutoresponderID='" . addslashes($AutoID)."'"; $search_criteria_result = mysql_query($query); $info = mysql_fetch_assoc($search_criteria_result); $search_criteria = unserialize(stripslashes($info['SearchCriteria'])); $list = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists l WHERE l.ListID='" . addslashes($info['ListID'])."'"); if (mysql_num_rows($list) > 0) { $listname = mysql_result($list, 0, 0); } else { $listname = 'Unknown mailing list, has been deleted.'; } $results = 'The autoresponder was sent to the \'' . $listname . '\' list with the following details:'; if (empty($search_criteria)) { $results .= 'Search Criteria has not been saved. You are viewing statistics for a newsletter that was sent before search information was recorded.
'; $search_details = ''; } else { $search_details = ''; $search_details .= 'Email address'; $search_details .= '' . ((empty($search_criteria['Email'])) ? 'Not used' : $search_criteria['Email']) . ''; $search_details .= ''; switch(strtolower($search_criteria['Status'])) { case 'all': $active = 'Both active and inactive'; break; case 1: $active = 'Active'; break; default: $active = 'Inactive'; } $search_details .= ''; $search_details .= 'Active / Inactive Subscribers:'; $search_details .= '' . $active . ''; $search_details .= ''; switch(strtolower($search_criteria['Confirmed'])) { case 'all': $conf = 'Both confirmed and unconfirmed'; break; case 1: $conf = 'Confirmed'; break; default: $conf = 'Unconfirmed'; } $search_details .= ''; $search_details .= 'Confirmed / Unconfirmed Subscribers:'; $search_details .= '' . $conf . ''; $search_details .= ''; switch($search_criteria['SearchFormat']) { case 1: $format = 'Text'; break; case 2: $format = 'HTML'; break; default: $format = 'N/A'; } $search_details .= ''; $search_details .= 'Text/HTML Subscribers:'; $search_details .= '' . $format . ''; $search_details .= ''; } $results .= "

\n"; $results .= ''; $results .= ''; $opens_result = mysql_query("SELECT COUNT(*) FROM " . $TABLEPREFIX . "email_opens WHERE SendID='".addslashes($AutoID)."' AND EmailType='Auto'"); $opens = mysql_result($opens_result, 0, 0); $openPercent = 0; if($opens == 0) { $openText = 'Unknown'; } else { $openText = number_format($opens, 0); } $results .= ''; $results .= ''; $results .= ''; $results .= ''; $results .= $search_details; if (!empty($search_criteria['Fields'])) { foreach($search_criteria['Fields'] as $id => $details) { $name = current(array_keys($details)); // if it's an array, we have a type but we don't have a date, keep going. if ((is_array($details[$name]) && isset($details[$name]['type'])) && !isset($details[$name]['dd'])) continue; $results .= ''; $results .= ''; $results .= ''; $results .= ''; } } $results .= '
Autoresponder Statistics
Opened By:' . $openText . '
'; if (is_array($details[$name])) { if (isset($details[$name]['type'])) { $field_details = ucwords($details[$name]['type']) . ' ' . $details[$name]['dd'] . '/' . $details[$name]['mm'] . '/' . $details[$name]['yy'] . '  (Format is dd/mm/yyyy)'; } else { $field_details = '(Short Values Only)  ' . strtoupper(implode(', ', $details[$name])); } } else { $field_details = $details[$name]; } $results .= ucwords($name); $results .= '' . $field_details . '
'; return array($listname, $results); } function ViewDetailedOpenStats($SendID=0, $ListID=0, $pagenum=0) { global $TABLEPREFIX, $ROOTURL; $perpage = 50; $query = "SELECT * FROM " . $TABLEPREFIX . "sends WHERE SendID='" . addslashes($SendID) . "'"; $result = mysql_query($query); $send_info = mysql_fetch_assoc($result); $listname_result = mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID='" . addslashes($ListID) . "'"); $listname = mysql_result($listname_result, 0, 0); $emailname_result = mysql_query("SELECT EmailName FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID='" . addslashes($send_info['ComposedID']) . "'"); if (mysql_num_rows($emailname_result) > 0) { $emailname = mysql_result($emailname_result, 0, 0); } else { $emailname = 'Unknown newsletter, has been deleted'; } $total_query = "SELECT COUNT(m.MemberID) FROM " . $TABLEPREFIX . "email_opens eo, " . $TABLEPREFIX . "members m WHERE eo.MemberID=m.MemberID AND eo.SendID='" . addslashes($SendID) . "'"; $total = mysql_result(mysql_query($total_query), 0, 0); $numpages = ceil($total / $perpage); $start = (($pagenum -1) * $perpage); $backlink = MakeAdminLink('stats?Action=Step3&ReportType=7&ListID=' . $ListID); $goback = "
"; if ($total <= 0) { $info = 'No subscribers have opened this newsletter.
' . $goback; return array($listname, $emailname, $info); } $paging = "Currently displaying page " . number_format(($pagenum),0) . " of " . number_format($numpages,0) . " pages.

"; $baselink = 'stats?Action=Step4&View=OpenStats&ListID=' . $ListID . '&ReportType=7&SendID=' . $SendID; if($numpages > 1) { $paging .= '«« | '; if ($pagenum > 1) { $paging.='Prev |'; } else { $paging.='Prev |'; } } $sPos = $pagenum - 10; if($sPos < 1) $sPos = 1; $ePos = $pagenum + 10; if($ePos > $numpages) $ePos = $numpages; for($i = $sPos; $i <= $ePos; $i++) { if($pagenum != $i) { $paging .= ' ' . ($i) . ' |'; } else { $paging .= ' ' . ($i) . ' |'; } } if($pagenum < $numpages) { $paging.=' Next | '; } else { $paging.=' Next | '; } if($numpages > 1) { $paging .= ' »»'; } $info = ''; $info .= ''; $info .= ''; $query = "SELECT m.MemberID, m.Email, eo.TimeStamp FROM " . $TABLEPREFIX . "email_opens eo, " . $TABLEPREFIX . "members m WHERE eo.MemberID=m.MemberID AND eo.SendID='" . addslashes($SendID) . "' ORDER BY TimeStamp DESC, m.Email LIMIT " . $start . ", " . $perpage; $result = mysql_query($query); while($row = mysql_fetch_assoc($result)) { $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; } $info .= '
' . $goback . '' . $paging . '
 Subscriber Email AddressOpened When
' . stripslashes($row['Email']) . '' . DisplayDate(stripslashes($row['TimeStamp'])) . '
'; return array($listname, $emailname, $info); } function SignUpStats($ListID=0) { global $TABLEPREFIX, $FORM_REQUIRED_ITEM, $FORM_NOT_REQUIRED_ITEM, $CURRENTADMIN, $HELP_ITEMS, $ROOTURL; $info = ''; $info .= ''; $query = "SELECT COUNT(*) AS YrCount, YEAR(FROM_UNIXTIME(SubscribeDate)) AS Year FROM " . $TABLEPREFIX . "members WHERE ListID='" . addslashes($ListID) . "' GROUP BY Year"; $result = mysql_query($query); $base_link = 'stats?Action=Step4&View=Signups&ListID=' . $ListID . '&ReportType=3'; while($row = mysql_fetch_assoc($result)) { $link = MakeAdminLink($base_link . '&Year=' . $row['Year']); $info .= ''; $info .= ''; $info .= ''; $info .= ''; $info .= ''; } $info .= '
 YearNumber of SubscribersAction
' . $row['Year'] . '' . number_format($row['YrCount'], 0) . 'View'; $info .= '
'; return $info; } function SubscriberStatsForm($ListID=0) { global $TABLEPREFIX, $FORM_REQUIRED_ITEM, $FORM_NOT_REQUIRED_ITEM, $CURRENTADMIN, $HELP_ITEMS; $FORM_ITEMS[$FORM_REQUIRED_ITEM . 'Status']='select|Status:1:ALL->View All;0->Inactive;1->Active:1'; $HELP_ITEMS['Status']['Title'] = 'Status'; $HELP_ITEMS['Status']['Content'] = 'Should this report include subscribers who are set to active, inactive or both?'; $FORM_ITEMS[$FORM_REQUIRED_ITEM . 'Confirmed']='select|Confirmed:1:ALL->Either;0->Not Confirmed;1->Confirmed:1'; $HELP_ITEMS['Confirmed']['Title'] = 'Confirmed'; $HELP_ITEMS['Confirmed']['Content'] = 'Should this report include subscribers who are confirmed, unconfirmed or both?'; $FORM_ITEMS[$FORM_REQUIRED_ITEM . 'Format']='select|Format:1:ALL->Either;1->Text;2->HTML:ALL'; $HELP_ITEMS['Format']['Title'] = 'Format'; $HELP_ITEMS['Format']['Content'] = 'Should this report include subscribers who are flagged to receive text emails, HTML emails or both?'; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . 'Match Email']='textfield|Email:100:44:'; $HELP_ITEMS['Email']['Title'] = 'Match Email'; $HELP_ITEMS['Email']['Content'] = 'If you want to match a particular email address, enter the complete or partial email address here'; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . 'Filter by Date']='dateboxsearch|SubscribeDate::1'; $HELP_ITEMS['SubscribeDate']['Title'] = 'Filter by Date'; $HELP_ITEMS['SubscribeDate']['Content'] = 'If you would like to filter your search by date subscribed, select this and select your date range'; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . 'Members Per DisplayPage']='select|PerPage:1:1->1;10->10;20->20;50->50;100->100:20'; $HELP_ITEMS['PerPage']['Title'] = 'Members Per DisplayPage'; $HELP_ITEMS['PerPage']['Content'] = 'How many members should be shown in the list on the next page?'; $links = FetchLinks(); $alllinks = '0->Not Applicable;A->Any Link;'; foreach($links as $pos => $details) { $alllinks .= $details['LinkID'] . '->' . $details['URL'] . ';'; } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Clicked on Link"]="select|HaveClickedLink:1:" . str_replace(':', '$$COLON$$', $alllinks); $HELP_ITEMS["HaveClickedLink"]["Title"] = "Have Clicked Link"; $HELP_ITEMS["HaveClickedLink"]["Content"] = "Should this report only include subscribers who have clicked on a particular link from a newsletter that you sent out?"; //extra fields $size = $min = $max = $Width = $Height = 0; $custom_fields = FetchCustomFields(); if (!empty($custom_fields)) { $FORM_ITEMS['-4']='spacer| '; $FORM_ITEMS['-100'] = 'spacer|
  Filter by Custom Fields
'; } foreach($custom_fields as $pos => $f) { switch($f['FieldType']){ case 'shorttext': list($size,$min,$max)=explode(',',$f['AllValues']); $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Search ".$f['FieldName']]='textfield|Fields['.$f['FieldID'].']:'.$max.':44'; break; case 'longtext': list($Width,$Height)=explode(',',$f['AllValues']); $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . 'Search '.$f['FieldName']]='textfield|Fields['.$f['FieldID'].']:500:44'; break; case 'checkbox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . $f['FieldName']]='select|Fields['.$f['FieldID'].']:1:y->Yes;n->No;all->All:all'; break; case 'multicheckbox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . $f['FieldName']]='checkboxes|Fields['.$f['FieldID'].']:' . $f['AllValues'] . ':'; break; case 'datebox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . $f['FieldName']]='dateboxsearch|Fields['.$f['FieldID'].']:' . $f['AllValues'] . ':'; break; case 'dropdown': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . $f['FieldName']]='select|Fields['.$f['FieldID'].']:1:->All Values;'.$f['AllValues'].':'; break; } } $FORM_ITEMS['-1']='submit|Search:1-stats'; $FORM=new AdminForm; $FORM->title="SearchMembers"; $FORM->items=$FORM_ITEMS; $FORM->action=MakeAdminLink("stats?Action=Step4&View=SubscriberStats&ListID=$ListID"); $FORM->MakeForm("Filter Subscriber Details"); $MO=$FORM->output; $MO = "Complete the form below to filter subscribers for this report (optional)." . $MO; $return = $MO . ' '; return $return; } function SendStatistics($ListID=0) { global $TABLEPREFIX, $ROOTURL; $sends=mysql_query("SELECT * FROM " . $TABLEPREFIX . "sends WHERE ListID='".addslashes($ListID)."' AND DateStarted != '' ORDER BY DateStarted DESC"); $newsletter_list = array(); if(mysql_num_rows($sends) > 0) { $SO = '

'; $more_stats_base = 'stats?Action=Step4&View=Send&ListID=' . $ListID . '&ReportType=1'; while($s=mysql_fetch_assoc($sends)) { $s = stripslashes_array($s); if (!in_array($s['ComposedID'], array_keys($newsletter_list))) { $newsletter_result = mysql_query("SELECT EmailName FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID = '" . addslashes($s['ComposedID'])."'"); if (mysql_num_rows($newsletter_result) > 0) { $NewsletterName = mysql_result($newsletter_result, 0, 0); } else { $NewsletterName = "Unknown Newsletter. Has been deleted."; } $newsletter_list[$s['ComposedID']] = $NewsletterName; } else { $NewsletterName = $newsletter_list[$s['ComposedID']]; } $more_stats = MakeAdminLink($more_stats_base . '&SendID=' . $s['SendID']); $SO .= ' '; $end = $s['DateEnded']; if ($s['DateEnded'] == 0) { $end = time(); } $sendSeconds = ($end-$s['DateStarted']); // If it took longer than a minute, then express it in minutes instead of seconds if($sendSeconds > 60) { $sendTime = floor($sendSeconds / 60); $sendTime .= ($sendTime == 1 ? ' minute' : ' minutes'); } else { $sendTime = "$sendSeconds seconds"; } if ($s['DateEnded'] == 0) $sendTime .= " so far"; $SO .= ' '; } $SO.='
  Newsletter Date Sent Recipients Time Taken Completed Action
' . $NewsletterName . ' ' . DisplayDate($s["DateStarted"]) . ' ' . number_format($s["EmailsSent"], 0) . ' ' . $sendTime . ' ' . (($s['Completed'] == 1) ? 'Yes' : 'No') . ' View
'; } else { // No newsletters have been sent $SO = 'No newsletters have been sent yet. Please click on the button below to view another report.

'; } return $SO; } function ViewAutoresponderStats($ListID=0) { global $TABLEPREFIX, $ROOTURL; $responders = mysql_query("SELECT * FROM " . $TABLEPREFIX . "autoresponders WHERE ListID='".addslashes($ListID)."' ORDER BY DateCreated DESC"); if(mysql_num_rows($responders) > 0) { $SO = '

'; $more_stats_base = 'stats?Action=Step4&View=Auto&ListID=' . $ListID . '&ReportType=4'; while($responder = mysql_fetch_assoc($responders)) { $responder = stripslashes_array($responder); $send_when = $responder['HoursAfterSubscription'] . ' hours after'; $recipients = 'N/A'; $created = ($responder['DateCreated'] > 0) ? DisplayDate($responder['DateCreated']) : 'Unknown'; $more_stats = MakeAdminLink($more_stats_base . '&AutoResponderID=' . $responder['AutoresponderID']); $SO .= ' '; } $SO.='
  Subject Date Created Send When? Action
' . $responder['Subject'] . ' ' . $created . ' ' . $send_when . ' View
'; } else { // No newsletters have been sent $SO = '

No autoresponders have been set up. Please click on the button below to view another report.

'; } return $SO; } ?>