+
+ public static function setRegisterMethodByUserCount()
+ {
+ $max_registered_users = DI::config()->get('config', 'max_registered_users');
+ if ($max_registered_users <= 0) {
+ return;
+ }
+
+ $register_policy = DI::config()->get('config', 'register_policy');
+ if (!in_array($register_policy, [Module\Register::OPEN, Module\Register::CLOSED])) {
+ Logger::debug('Unsupported register policy.', ['policy' => $register_policy]);
+ return;
+ }
+
+ $users = DBA::count('user', ['blocked' => false, 'account_removed' => false, 'account_expired' => false]);
+ if (($users >= $max_registered_users) && ($register_policy == Module\Register::OPEN)) {
+ DI::config()->set('config', 'register_policy', Module\Register::CLOSED);
+ Logger::notice('Max users reached, registration is closed.', ['users' => $users, 'max' => $max_registered_users]);
+ } elseif (($users < $max_registered_users) && ($register_policy == Module\Register::CLOSED)) {
+ DI::config()->set('config', 'register_policy', Module\Register::OPEN);
+ Logger::notice('Below maximum users, registration is opened.', ['users' => $users, 'max' => $max_registered_users]);
+ } else {
+ Logger::debug('Unchanged register policy', ['policy' => $register_policy, 'users' => $users, 'max' => $max_registered_users]);
+ }
+ }