forked from science-ation/science-ation
167 lines
5.2 KiB
PHP
167 lines
5.2 KiB
PHP
<?
|
|
|
|
/*
|
|
* This file is part of the 'Science Fair In A Box' project
|
|
* Science-ation Website: https://science-ation.ca/
|
|
*
|
|
* Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
|
|
* Copyright (C) 2005 James Grant <james@lightbox.org>
|
|
* Copyright (C) 2024 AlgoLibre Inc. <science-ation@algolibre.io>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License as published by the Free Software Foundation, version 2.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
?>
|
|
<?
|
|
require('../common.inc.php');
|
|
require_once('../user.inc.php');
|
|
user_auth_required('committee', 'admin');
|
|
|
|
if (get_value_from_array($_GET, 'action') == 'status') {
|
|
$q = $pdo->prepare('SELECT * FROM emailqueue WHERE finished IS NULL');
|
|
$q->execute();
|
|
|
|
if ($config['emailqueue_lock'] || $q->rowCount()) {
|
|
echo '<h4>' . i18n('Active Send Queues') . "</h4>\n";
|
|
|
|
$q = $pdo->prepare('SELECT *,UNIX_TIMESTAMP(started) AS ts FROM emailqueue WHERE finished IS NULL ORDER BY started DESC');
|
|
$q->execute();
|
|
if (!$config['emailqueue_lock']) {
|
|
echo error(i18n("It looks like there's emails waiting to send, but the sending process isnt running.")
|
|
. '<br />'
|
|
. '<a href="communication.php?action=restartqueue">' . i18n('Click here to manually restart the process') . '</a>');
|
|
}
|
|
|
|
echo '<table class="tableview">';
|
|
echo '<thead><tr>';
|
|
echo ' <th>' . i18n('Name') . "</th>\n";
|
|
echo ' <th>' . i18n('Subject') . "</th>\n";
|
|
echo ' <th>' . i18n('Started') . "</th>\n";
|
|
echo ' <th>' . i18n('Progress') . "</th>\n";
|
|
echo ' <th>' . i18n('Duration') . "</th>\n";
|
|
echo ' <th>' . i18n('ETA') . "</th>\n";
|
|
echo ' <th>' . i18n('Cancel') . "</th>\n";
|
|
echo "</tr></thead>\n";
|
|
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
echo '<tr>';
|
|
echo " <td>$r->name</td>\n";
|
|
echo " <td>$r->subject</td>\n";
|
|
echo " <td>$r->started</td>\n";
|
|
$remaining = $r->numtotal - $r->numsent;
|
|
$now = time();
|
|
$duration = $now - $r->ts;
|
|
$num = $r->numsent + $r->numfailed;
|
|
echo " <td align=\"center\">$num / $r->numtotal</td>\n";
|
|
echo '<td>';
|
|
echo format_duration($duration);
|
|
echo '</td>';
|
|
echo '<td>';
|
|
if ($r->numsent || $r->numfailed) {
|
|
$emailspersecond = ($r->numsent + $r->numfailed) / $duration;
|
|
$remainingduration = $remaining / $emailspersecond;
|
|
echo format_duration($remainingduration);
|
|
} else {
|
|
echo 'Unknown';
|
|
}
|
|
echo '</td>';
|
|
echo "<td><a href=\"#\" onclick=\"return cancelQueue($r->id)\">" . i18n('cancel') . '</td>';
|
|
echo "</tr>\n";
|
|
}
|
|
echo '</table>';
|
|
echo "<br /><br />\n";
|
|
} else {
|
|
echo notice('No Email Communications are currently being sent out');
|
|
?>
|
|
<script type="text/javascript">
|
|
stopRefreshing();
|
|
</script>
|
|
<?
|
|
}
|
|
|
|
$q = $pdo->prepare('SELECT * FROM emailqueue WHERE finished IS NOT NULL ORDER BY started DESC LIMIT 10');
|
|
$q->execute();
|
|
echo '<h4>' . i18n('Completed Send Queues') . "</h4>\n";
|
|
echo "<table class=\"tableview\">\n";
|
|
echo '<thead><tr>';
|
|
echo ' <th>' . i18n('Name') . "</th>\n";
|
|
echo ' <th>' . i18n('Subject') . "</th>\n";
|
|
echo ' <th>' . i18n('Started') . "</th>\n";
|
|
echo ' <th>' . i18n('Finished') . "</th>\n";
|
|
echo ' <th>' . i18n('Total Emails') . "</th>\n";
|
|
echo ' <th>' . i18n('Success') . "</th>\n";
|
|
echo ' <th>' . i18n('Failed') . "</th>\n";
|
|
// FIXME: comment bounced until we implement it
|
|
// echo " <th>".i18n("Bounced")."</th>\n";
|
|
echo "</tr></thead>\n";
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
echo '<tr>';
|
|
echo " <td>$r->name</td>\n";
|
|
echo " <td>$r->subject</td>\n";
|
|
echo " <td>$r->started</td>\n";
|
|
echo " <td>$r->finished</td>\n";
|
|
echo " <td align=\"center\">$r->numtotal</td>\n";
|
|
echo " <td align=\"center\">$r->numsent</td>\n";
|
|
echo " <td align=\"center\">$r->numfailed</td>\n";
|
|
// echo " <td align=\"center\">$r->numbounced</td>\n";
|
|
echo "</tr>\n";
|
|
}
|
|
echo "</table>\n";
|
|
exit;
|
|
}
|
|
|
|
send_header(
|
|
'Communication Sending Status',
|
|
array(
|
|
'Committee Main' => 'committee_main.php',
|
|
'Administration' => 'admin/index.php',
|
|
'Communication' => 'admin/communication.php'
|
|
)
|
|
);
|
|
?>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
refreshStatus();
|
|
});
|
|
var refreshTimeout;
|
|
|
|
function refreshStatus() {
|
|
$("#queuestatus").load("communication_send_status.php?action=status", null, function() {
|
|
<? if ($config['emailqueue_lock']) { ?>
|
|
refreshTimeout = setTimeout('refreshStatus()', 1000);
|
|
<? } ?>
|
|
});
|
|
}
|
|
|
|
function stopRefreshing() {
|
|
if (refreshTimeout) {
|
|
clearTimeout(refreshTimeout);
|
|
window.location.href = "communication_send_status.php";
|
|
}
|
|
}
|
|
|
|
function cancelQueue(id) {
|
|
$("#debug").load("communication.php?action=cancel&cancel=" + id, null, function() {
|
|
if (!refreshTimeout) refreshStatus();
|
|
});
|
|
}
|
|
</script>
|
|
<?
|
|
echo '<br />';
|
|
echo '<div id="queuestatus" style="margin-left: 20px;">';
|
|
echo '</div>';
|
|
echo '<br />';
|
|
|
|
send_footer();
|
|
?>
|