diff options
author | zottel <github@zottel.net> | 2014-02-19 08:30:14 +0100 |
---|---|---|
committer | zottel <github@zottel.net> | 2014-02-19 08:30:14 +0100 |
commit | 79d3dae7fa80df6ea6914807bcde4d8b8c390361 (patch) | |
tree | 96327bd990038c66f0e644c505522cb424a1bbd0 /include/account.php | |
parent | 2bca2199112625593eb412584e17e874e71ca913 (diff) | |
parent | 24d119b8c4e94ed130577e4e4a8d17ea13c406ac (diff) | |
download | volse-hubzilla-79d3dae7fa80df6ea6914807bcde4d8b8c390361.tar.gz volse-hubzilla-79d3dae7fa80df6ea6914807bcde4d8b8c390361.tar.bz2 volse-hubzilla-79d3dae7fa80df6ea6914807bcde4d8b8c390361.zip |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'include/account.php')
-rw-r--r-- | include/account.php | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/include/account.php b/include/account.php index 7d1aa598d..1206223d9 100644 --- a/include/account.php +++ b/include/account.php @@ -401,3 +401,58 @@ function user_deny($hash) { return true; } + + +/** + * @function downgrade_accounts() + * Checks for accounts that have past their expiration date. + * If the account has a service class which is not the site default, + * the service class is reset to the site default and expiration reset to never. + * If the account has no service class it is expired and subsequently disabled. + * called from include/poller.php as a scheduled task. + * + * Reclaiming resources which are no longer within the service class limits is + * not the job of this function, but this can be implemented by plugin if desired. + * Default behaviour is to stop allowing additional resources to be consumed. + */ + + +function downgrade_accounts() { + + $r = q("select * from account where not ( account_flags & %d ) + and account_expires != '0000-00-00 00:00:00' + and account_expires < UTC_TIMESTAMP() ", + intval(ACCOUNT_EXPIRED) + ); + + if(! $r) + return; + + $basic = get_config('system','default_service_class'); + + + foreach($r as $rr) { + + if(($basic) && ($rr['account_service_class']) && ($rr['account_service_class'] != $basic)) { + $x = q("UPDATE account set account_service_class = '%s', account_expires = '%s' + where account_id = %d limit 1", + dbesc($basic), + dbesc('0000-00-00 00:00:00'), + intval($rr['account_id']) + ); + $ret = array('account' => $rr); + call_hooks('account_downgrade', $ret ); + logger('downgrade_accounts: Account id ' . $rr['account_id'] . ' downgraded.'); + } + else { + $x = q("UPDATE account SET account_flags = (account_flags | %d) where account_id = %d limit 1", + intval(ACCOUNT_EXPIRED), + intval($rr['account_id']) + ); + $ret = array('account' => $rr); + call_hooks('account_downgrade', $ret); + logger('downgrade_accounts: Account id ' . $rr['account_id'] . ' expired.'); + } + } +} + |