myaac/tools/generate_account_number.php
slawkens afea618867 Optimize code (account number generation)
Thanks kamil-karkus for suggestion
2022-05-31 15:13:59 +02:00

55 lines
1.0 KiB
PHP

<?php
/**
* Account Number Generator
* Returns json with result
*
* @package MyAAC
* @author Slawkens <slawkens@gmail.com>
* @copyright 2021 MyAAC
* @link https://my-aac.org
*/
// we need some functions
require '../common.php';
require SYSTEM . 'functions.php';
require SYSTEM . 'init.php';
if (config('account_login_by_email') || USE_ACCOUNT_NAME) {
return;
}
$hasNumberColumn = $db->hasColumn('accounts', 'number');
do {
$length = ACCOUNT_NUMBER_LENGTH;
$min = 10 ** ($length - 1);
$max = 10 ** $length - 1;
try {
$number = random_int($min, $max);
} catch (Exception $e) {
error_('');
}
$query = $db->query('SELECT `id` FROM `accounts` WHERE `' . ($hasNumberColumn ? 'number' : 'id') . '` = ' . $db->quote($number));
} while($query->rowCount() >= 1);
success_($number);
/**
* Output message & exit.
*
* @param string $desc Description
*/
function success_($desc) {
echo json_encode([
'success' => $desc
]);
exit();
}
function error_($desc) {
echo json_encode([
'error' => $desc
]);
exit();
}