This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/cron.php

49 lines
1.3 KiB
PHP
Raw Normal View History

<?php
/*
* Sakura Cron Agent
*/
// Declare Namespace
namespace Sakura;
// Check if the script isn't executed by root
if (function_exists('posix_getuid')) {
if (posix_getuid() === 0) {
trigger_error('Running cron as root is disallowed for security reasons.', E_USER_ERROR);
exit;
}
}
// Define that this page won't require templating
define('SAKURA_NO_TPL', true);
2016-01-26 18:09:18 +00:00
// To prevent the CLI from showing up
define('SAKURA_CRON', true);
// Include components
2015-12-29 21:52:19 +00:00
require_once 'sakura.php';
// Clean expired sessions
2016-02-18 23:28:44 +00:00
$cleanSessions = DB::prepare('DELETE FROM `{prefix}sessions` WHERE `session_expire` < :time AND `session_remember` != 1');
$cleanSessions->execute([
'time' => time(),
]);
// Delete notifications that are older than a month but not unread
2016-02-18 23:28:44 +00:00
$cleanAlerts = DB::prepare('DELETE FROM `{prefix}notifications` WHERE `alert_timestamp` < :time AND `alert_read` = 1');
$cleanAlerts->execute([
'time' => (time() - 109500),
]);
// Get expired premium accounts
2016-02-18 23:28:44 +00:00
$expiredPremium = DB::prepare('SELECT * FROM `{prefix}premium` WHERE `premium_expire` < :time');
$expiredPremium->execute([
'time' => time(),
]);
2016-02-18 23:28:44 +00:00
$expiredPremium = $expiredPremium->fetchAll();
2015-12-29 21:52:19 +00:00
// Process expired premium accounts, make this not stupid in the future
foreach ($expiredPremium as $expired) {
2016-02-18 23:28:44 +00:00
Users::updatePremiumMeta($expired->user_id);
}