2021-12-03 03:01:39 +00:00
|
|
|
<?php
|
|
|
|
|
2022-02-16 04:08:28 +00:00
|
|
|
namespace Code\Daemon;
|
2018-06-05 06:19:16 +00:00
|
|
|
|
2022-02-16 04:08:28 +00:00
|
|
|
use Code\Lib\ServiceClass;
|
|
|
|
use Code\Lib\Libzot;
|
|
|
|
use Code\Extend\Hook;
|
2022-01-25 05:49:48 +00:00
|
|
|
|
2022-11-27 09:15:28 +00:00
|
|
|
class Cron_daily implements DaemonInterface
|
2021-12-03 03:01:39 +00:00
|
|
|
{
|
|
|
|
|
2022-11-27 09:15:28 +00:00
|
|
|
public function run(int $argc, array $argv): void
|
2021-12-03 03:01:39 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
logger('cron_daily: start');
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
/**
|
|
|
|
* Cron Daily
|
|
|
|
*
|
|
|
|
*/
|
2016-05-20 04:22:04 +00:00
|
|
|
|
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// make sure our own site record is up to date
|
2022-07-14 11:09:45 +00:00
|
|
|
Libzot::import_site(Libzot::site_info());
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2020-09-03 06:02:32 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// Fire off the Cron_weekly process if it's the correct day.
|
2020-09-03 06:02:32 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
$d3 = intval(datetime_convert('UTC', 'UTC', 'now', 'N'));
|
|
|
|
if ($d3 == 7) {
|
|
|
|
Run::Summon([ 'Cron_weekly' ]);
|
|
|
|
}
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// once daily run birthday_updates and then expire in background
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// FIXME: add birthday updates, both locally and for xprof for use
|
|
|
|
// by directory servers
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
update_birthdays();
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// expire any read notifications over a month old
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
q(
|
|
|
|
"delete from notify where seen = 1 and created < %s - INTERVAL %s",
|
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval('60 DAY')
|
|
|
|
);
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// expire any unread notifications over a year old
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
q(
|
|
|
|
"delete from notify where seen = 0 and created < %s - INTERVAL %s",
|
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval('1 YEAR')
|
|
|
|
);
|
2017-02-28 22:56:26 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// expire old delivery reports
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
$keep_reports = intval(get_config('system', 'expire_delivery_reports'));
|
|
|
|
if ($keep_reports === 0) {
|
|
|
|
$keep_reports = 10;
|
|
|
|
}
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
q(
|
|
|
|
"delete from dreport where dreport_time < %s - INTERVAL %s",
|
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval($keep_reports . ' DAY')
|
|
|
|
);
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// delete accounts that did not submit email verification within 3 days
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
$r = q(
|
|
|
|
"select * from register where password = 'verify' and created < %s - INTERVAL %s",
|
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval('3 DAY')
|
|
|
|
);
|
|
|
|
if ($r) {
|
|
|
|
foreach ($r as $rv) {
|
|
|
|
q(
|
|
|
|
"DELETE FROM account WHERE account_id = %d",
|
|
|
|
intval($rv['uid'])
|
|
|
|
);
|
2021-03-18 01:30:37 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
q(
|
|
|
|
"DELETE FROM register WHERE id = %d",
|
|
|
|
intval($rv['id'])
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2021-03-18 01:30:37 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// expire any expired accounts
|
2022-01-25 01:26:12 +00:00
|
|
|
ServiceClass::downgrade_accounts();
|
2021-03-18 01:30:37 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
Run::Summon([ 'Expire' ]);
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
remove_obsolete_hublocs();
|
2022-09-01 19:17:27 +00:00
|
|
|
$data = datetime_convert();
|
|
|
|
Hook::call('cron_daily', $data);
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
set_config('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd')));
|
2016-05-20 04:22:04 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
/**
|
|
|
|
* End Cron Daily
|
|
|
|
*/
|
|
|
|
}
|
2016-05-20 04:22:04 +00:00
|
|
|
}
|