308 lines
11 KiB
PHP
308 lines
11 KiB
PHP
|
|
<script language="Javascript" src="js/jslib.js" type="text/javascript"></script>
|
|
<hr>
|
|
|
|
<?php
|
|
|
|
require_once dirname(__FILE__).'/accesscheck.php';
|
|
|
|
if( !$GLOBALS["require_login"] || $_SESSION["logindetails"]['superuser'] ){
|
|
$ownerselect_and = '';
|
|
$ownerselect_where = '';
|
|
} else {
|
|
$ownerselect_where = ' WHERE owner = ' . $_SESSION["logindetails"]['id'];
|
|
$ownerselect_and = ' and owner = ' . $_SESSION["logindetails"]['id'];
|
|
}
|
|
if (isset($_GET['start'])) {
|
|
$start = sprintf('%d',$_GET['start']);
|
|
} else {
|
|
unset($start);
|
|
}
|
|
|
|
# remember last one listed
|
|
if (!isset($_GET["type"]) && !empty($_SESSION["lastmessagetype"])) {
|
|
$_GET["type"] = $_SESSION["lastmessagetype"];
|
|
} elseif (isset($_GET["type"])) {
|
|
$_SESSION["lastmessagetype"] = $_GET["type"];
|
|
}
|
|
|
|
#print '<p>'.PageLink2("messages&type=sent","Sent Messages").' ';
|
|
#print PageLink2("messages&type=draft","Draft Messages").' ';
|
|
#print PageLink2("messages&type=queue","Queued Messages").' ';
|
|
#print PageLink2("messages&type=stat","Static Messages").' ';
|
|
#if (ENABLE_RSS) {
|
|
# print PageLink2("messages&type=rss","RSS Messages").' ';
|
|
#}
|
|
#print '</p>';
|
|
|
|
### Print tabs
|
|
$tabs = new WebblerTabs();
|
|
$tabs->addTab($GLOBALS['I18N']->get("sent"),PageUrl2("messages&type=sent"));
|
|
$tabs->addTab($GLOBALS['I18N']->get("draft"),PageUrl2("messages&type=draft"));
|
|
$tabs->addTab($GLOBALS['I18N']->get("queued"),PageUrl2("messages&type=queued"));#
|
|
if (USE_PREPARE) {
|
|
$tabs->addTab($GLOBALS['I18N']->get("static"),PageUrl2("messages&type=static"));
|
|
}
|
|
#if (ENABLE_RSS) {
|
|
# $tabs->addTab("rss",PageUrl2("messages&type=rss"));
|
|
#}
|
|
if (!empty($_GET['type'])) {
|
|
$tabs->setCurrent($_GET["type"]);
|
|
} else {
|
|
$_GET['type'] = 'sent';
|
|
$tabs->setCurrent('sent');
|
|
}
|
|
|
|
print $tabs->display();
|
|
|
|
### Process 'Action' requests
|
|
if (!empty($_GET["delete"])) {
|
|
$todelete = array();
|
|
if ($_GET["delete"] == "draft") {
|
|
$req = Sql_Query(sprintf('select id from %s where status = "draft" and (subject = "" or subject = "(no subject)") %s',$tables["message"],$ownerselect_and));
|
|
while ($row = Sql_Fetch_Row($req)) {
|
|
array_push($todelete,$row[0]);
|
|
}
|
|
} else {
|
|
array_push($todelete,sprintf('%d',$_GET["delete"]));
|
|
}
|
|
foreach ($todelete as $delete) {
|
|
# delete the index in delete
|
|
$result = Sql_query("select id from ".$tables["message"]." where id = $delete $ownerselect_and");
|
|
while ($row = Sql_Fetch_Row($result)) {
|
|
print $GLOBALS['I18N']->get("Deleting")." $row[0] ...";
|
|
$result = Sql_query("delete from ".$tables["message"]." where id = $row[0]");
|
|
$suc6 = Sql_Affected_Rows();
|
|
$result = Sql_query("delete from ".$tables["usermessage"]." where messageid = $row[0]");
|
|
$result = Sql_query("delete from ".$tables["listmessage"]." where messageid = $row[0]");
|
|
if ($suc6)
|
|
print "... ".$GLOBALS['I18N']->get("Done");
|
|
else
|
|
print "... ".$GLOBALS['I18N']->get("failed");
|
|
print '<br/>';
|
|
}
|
|
}
|
|
print "<hr /><br />\n";
|
|
}
|
|
|
|
if (isset($_GET['resend'])) {
|
|
$resend = sprintf('%d',$_GET['resend']);
|
|
# requeue the message in $resend
|
|
print $GLOBALS['I18N']->get("Requeuing")." $resend ..";
|
|
$result = Sql_query("update ".$tables["message"]." set status = \"submitted\",sendstart = now() where id = $resend");
|
|
$suc6 = Sql_Affected_Rows();
|
|
# only send it again to users, if we are testing, otherwise only to new users
|
|
if (TEST)
|
|
$result = Sql_query("delete from ".$tables["usermessage"]." where messageid = $resend");
|
|
if ($suc6)
|
|
print "... ".$GLOBALS['I18N']->get("Done");
|
|
else
|
|
print "... ".$GLOBALS['I18N']->get("failed");
|
|
print"<br /><hr /><br /><p>\n";
|
|
}
|
|
|
|
if (isset($_GET['suspend'])) {
|
|
$suspend = sprintf('%d',$_GET['suspend']);
|
|
print $GLOBALS['I18N']->get('Suspending')." $suspend ..";
|
|
$result = Sql_query(sprintf('update %s set status = "suspended" where id = %d and (status = "inprocess" or status = "submitted")',$tables["message"],$suspend));
|
|
$suc6 = Sql_Affected_Rows();
|
|
if ($suc6)
|
|
print "... ".$GLOBALS['I18N']->get("Done");
|
|
else
|
|
print "... ".$GLOBALS['I18N']->get("failed");
|
|
print"<br /><hr /><br /><p>\n";
|
|
}
|
|
|
|
### Switch tab
|
|
switch ($_GET["type"]) {
|
|
case "queued":
|
|
# $subselect = ' status in ("submitted") and (rsstemplate is NULL or rsstemplate = "") ';
|
|
$subselect = ' status in ("submitted","suspended") ';
|
|
$url_keep = '&type=queued';
|
|
break;
|
|
case "static":
|
|
$subselect = ' status in ("prepared") ';
|
|
$url_keep = '&type=static';
|
|
break;
|
|
# case "rss":
|
|
# $subselect = ' rsstemplate != ""';
|
|
# $url_keep = '&type=sent';
|
|
# break;
|
|
case "draft":
|
|
$subselect = ' status in ("draft") ';
|
|
$url_keep = '&type=draft';
|
|
break;
|
|
case "sent":
|
|
default:
|
|
$subselect = ' status in ("sent","inprocess") ';
|
|
$url_keep = '&type=sent';
|
|
break;
|
|
}
|
|
|
|
### Query messages from db
|
|
if( !$GLOBALS["require_login"] || $_SESSION["logindetails"]['superuser'] ){
|
|
$subselect= ' where '.$subselect;
|
|
} else {
|
|
$subselect = 'WHERE owner = ' . $_SESSION["logindetails"]['id'] .' and '.$subselect;
|
|
}
|
|
$req = Sql_query("SELECT count(*) FROM " . $tables["message"].' '.$subselect);
|
|
|
|
$total_req = Sql_Fetch_Row($req);
|
|
$total = $total_req[0];
|
|
$end = isset($start) ? $start + MAX_MSG_PP : MAX_MSG_PP;
|
|
if ($end > $total) $end = $total;
|
|
|
|
## Browse buttons table
|
|
if (isset($start) && $start > 0) {
|
|
$listing = $GLOBALS['I18N']->get("Listing message")." $start ".$GLOBALS['I18N']->get("to")." " . $end;
|
|
$limit = "limit $start,".MAX_MSG_PP;
|
|
} else {
|
|
$listing = $GLOBALS['I18N']->get("Listing message 1 to")." ".$end;
|
|
$limit = "limit 0,".MAX_MSG_PP;
|
|
$start = 0;
|
|
}
|
|
print $total. " ".$GLOBALS['I18N']->get("Messages")."</p>";
|
|
if ($total)
|
|
printf ('<table 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><p><hr>',
|
|
$listing,
|
|
PageLink2("messages$url_keep","<<","start=0"),
|
|
PageLink2("messages$url_keep","<",sprintf('start=%d',max(0,$start-MAX_MSG_PP))),
|
|
PageLink2("messages$url_keep",">",sprintf('start=%d',min($total,$start+MAX_MSG_PP))),
|
|
PageLink2("messages$url_keep",">>",sprintf('start=%d',$total-MAX_MSG_PP)));
|
|
if ($_GET["type"] == "draft") {
|
|
print '<p>'.PageLink2("messages&delete=draft",$GLOBALS['I18N']->get("Delete all draft messages without subject")).'</p>';
|
|
}
|
|
|
|
?>
|
|
|
|
<table border=1>
|
|
<tr>
|
|
<?php
|
|
|
|
## messages table
|
|
if ($total) {
|
|
print "<td>".$GLOBALS['I18N']->get("Message info")."</td><td>".$GLOBALS['I18N']->get("Status")."</td><td>".$GLOBALS['I18N']->get("Action")."</td></tr>";
|
|
$result = Sql_query("SELECT * FROM ".$tables["message"]." $subselect order by status,entered desc $limit");
|
|
while ($msg = Sql_fetch_array($result)) {
|
|
$uniqueviews = Sql_Fetch_Row_Query("select count(userid) from {$tables["usermessage"]} where viewed is not null and messageid = ".$msg["id"]);
|
|
$clicks = Sql_Fetch_Row_Query("select sum(clicked) from {$tables["linktrack"]} where messageid = ".$msg["id"]);
|
|
$messagedata = loadMessageData($msg['id']);
|
|
printf ('<tr><td valign="top"><table>
|
|
<tr><td valign="top">'.$GLOBALS['I18N']->get("From:").'</td><td valign="top">%s</td></tr>
|
|
<tr><td valign="top">'.$GLOBALS['I18N']->get("Subject:").'</td><td valign="top">%s</td></tr>
|
|
<tr><td valign="top">'.$GLOBALS['I18N']->get("Entered:").'</td><td valign="top">%s</td></tr>
|
|
<tr><td valign="top">'.$GLOBALS['I18N']->get("Embargo:").'</td><td valign="top">%s</td></tr>
|
|
</table>
|
|
</td>',
|
|
stripslashes($msg["fromfield"]),
|
|
stripslashes($msg["subject"]),
|
|
$msg["entered"],
|
|
$msg["embargo"]
|
|
);
|
|
|
|
if ($clicks[0]) {
|
|
$clicked = sprintf('<tr><td></td>
|
|
<td align="right" colspan=2>
|
|
<b>'.$GLOBALS['I18N']->get('Clicks').'</b></td>
|
|
<td align="center"><b>%d</b></td></tr>
|
|
',$clicks[0]);
|
|
} else {
|
|
$clicked = '';
|
|
}
|
|
|
|
## Rightmost two columns per message
|
|
if ($msg['status'] == 'sent') {
|
|
$status = $GLOBALS['I18N']->get("Sent").": ".$msg['sent'].'<br/>'.$GLOBALS['I18N']->get("Time to send").': '.timeDiff($msg["sendstart"],$msg["sent"]);
|
|
|
|
if ($msg['viewed']) {
|
|
$viewed = sprintf('<tr><td></td>
|
|
<td align="right" colspan=2>
|
|
<b>'.$GLOBALS['I18N']->get("Viewed").'</b></td>
|
|
<td align="center"><b>%d</b></td></tr>
|
|
<tr><td></td><td align="right" colspan=2>
|
|
<b>'.$GLOBALS['I18N']->get("Unique Views").'</b></td>
|
|
<td align="center"><b>%d</b></td></tr>
|
|
',$msg["viewed"],$uniqueviews[0]);
|
|
} else {
|
|
$viewed = '';
|
|
}
|
|
|
|
$sendstats =
|
|
sprintf('<br /><table border=1>
|
|
<tr>
|
|
<td>'.$GLOBALS['I18N']->get("total").'</td>
|
|
<td>'.$GLOBALS['I18N']->get("text").'</td>
|
|
<td>'.$GLOBALS['I18N']->get("html").'</td>
|
|
<td>'.$GLOBALS['I18N']->get("PDF").'</td>
|
|
<td>'.$GLOBALS['I18N']->get("both").'</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><b>%d</b></td>
|
|
<td align="center"><b>%d</b></td>
|
|
<td align="center"><b>%d</b></td>
|
|
<td align="center"><b>%d</b></td>
|
|
<td align="center"><b>%d</b></td>
|
|
</tr>
|
|
%s
|
|
%s
|
|
%s
|
|
</table>',
|
|
# $msg["processed"],
|
|
$msg['astext'] + $msg['ashtml'] + $msg['astextandhtml'] + $msg['aspdf'] + $msg['astextandpdf'],
|
|
$msg["astext"],
|
|
$msg["ashtml"] + $msg["astextandhtml"], //bug 0009687
|
|
$msg["aspdf"],
|
|
$msg["astextandpdf"],
|
|
$viewed,
|
|
$clicked,
|
|
$msg["bouncecount"] ? sprintf('<tr><td></td><td align="right" colspan=2><b>'.$GLOBALS['I18N']->get("Bounced").'</b></td><td align="center"><b>%d</b></td></tr>
|
|
',$msg["bouncecount"]):""
|
|
);
|
|
} else { ##Status <> sent
|
|
$status = $msg['status'].'<br/>'.$msg['rsstemplate'];
|
|
if ($msg['status'] == 'inprocess') {
|
|
$status .= '<br/>'.
|
|
'<meta http-equiv="Refresh" content="300">'.
|
|
$messagedata['to process'].' '.$GLOBALS['I18N']->get('still to process').'<br/>'.
|
|
$GLOBALS['I18N']->get('ETA').': '.$messagedata['ETA'].'<br/>'.
|
|
$GLOBALS['I18N']->get('Processing').' '.sprintf('%d',$messagedata['msg/hr']).' '.$GLOBALS['I18N']->get('msgs/hr')
|
|
;
|
|
}
|
|
$sendstats = '';
|
|
}
|
|
if ($msg['status'] == 'inprocess' || $msg['status'] == 'submitted') {
|
|
$status .= '<br/>'.
|
|
PageLink2('messages&suspend='.$msg['id'],$GLOBALS['I18N']->get('Suspend Sending'));
|
|
}
|
|
|
|
$totalsent = $msg['astext'] + $msg['ashtml'] + $msg['astextandhtml'] + $msg['aspdf'] + $msg['astextandpdf'];
|
|
|
|
printf('
|
|
<td>
|
|
%s<br />
|
|
</td><td>
|
|
%s<br />
|
|
%s<br />
|
|
%s<br />
|
|
%s
|
|
<a href="javascript:deleteRec(\'%s\');">'.$GLOBALS['I18N']->get("delete").'</a>
|
|
</td>
|
|
</tr>',
|
|
$status.
|
|
$sendstats,
|
|
PageLink2("message",$GLOBALS['I18N']->get("View"),"id=".$msg["id"]),
|
|
$msg['status'] != 'inprocess' ? PageLink2("messages",$GLOBALS['I18N']->get("Requeue"),"resend=".$msg["id"]) : $totalsent." ".$GLOBALS['I18N']->get("sent"),
|
|
$msg["status"] != 'prepared' ? PageLink2("send",$GLOBALS['I18N']->get("Edit"),"id=".$msg["id"]) : PageLink2("preparesend",$GLOBALS['I18N']->get("Edit"),"id=".$msg["id"]),
|
|
$clicks[0] && CLICKTRACK ? PageLink2("mclicks",$GLOBALS['I18N']->get("click stats"),"id=".$msg["id"]).'<br/>':'',
|
|
PageURL2("messages$url_keep","","delete=".$msg["id"])
|
|
);
|
|
}
|
|
}
|
|
|
|
?>
|
|
|
|
</table>
|
|
|
|
|