View Full Version : Can I set a scheduled task to email the previous 24 hours of CP log?
Steven W Hill
06-28-2011, 09:42 PM
As in thread title... I'd like to find a convenient way to quickly scan my control panel log every day, and my thought was to find a way to set up a scheduled task that would send me an email containing the previous day's control panel log activity. That way, every morning I can just open my email and give it a quick look.
Is that possible? Or a variation of such? Or are there other, better ideas?
I have vBulletin 3.8.2.
It is possible, yes.
You could, for example, create a plugin at the 'cron_script_cleanup_daily' hook with:
(not tested, but you get the idea)
$cplogs = $vbulletin->db->query_read_slave("
SELECT adminlog.*,user.username
FROM " . TABLE_PREFIX . "adminlog AS adminlog
LEFT JOIN " . TABLE_PREFIX . "user AS user USING(userid)
WHERE TIMESTAMPDIFF(DAY, FROM_UNIXTIME(adminlog.dateline), FROM_UNIXTIME(UNIX_TIMESTAMP())) <= 1
ORDER BY adminlog.adminlogid DESC
");
if ($vbulletin->db->num_rows($cplogs) > 0)
{
$message = "ID\tUsername\tDate\tScript\tAction\tExtra Info\tIP Address\n";
while ($cplog = $vbulletin->db->fetch_array($cplogs))
{
$message .= "$cplog[adminlogid]\t" . iif(!empty($log['username']), $log['username'], $vbphrase['n_a']) . "\t";
$message .= vbdate($vbulletin->options['logdateformat'], $log['dateline']) . "\t" . htmlspecialchars_uni($log['script']);
$message .= htmlspecialchars_uni($log['action']) . "\t" . htmlspecialchars_uni($log['extrainfo']) . "\t";
$message .= iif($log['ipaddress'], $log['ipaddress'], ' ') . "\n";
}
$message = trim($message);
vbmail(
'you@example.com',
"{$vbulletin->options['bbtitle']}: Control Panel Logs",
$message
);
}
$vbulletin->db->free_result($cplogs);
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.