Limit execution time for forum file-listing (#1211)

* Limit execution time for forum file-listing

* Prevent multiple ajax calling
---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
This commit is contained in:
Cønstantine Kovalensky 2023-12-18 09:03:00 +04:00 committed by GitHub
commit 0b499dc137
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 82 additions and 42 deletions

View file

@ -302,8 +302,18 @@ function make_rand_str(int $length = 10): string
return $randomString;
}
function array_deep(&$var, $fn, $one_dimensional = false, $array_only = false)
function array_deep(&$var, $fn, $one_dimensional = false, $array_only = false, $timeout = false)
{
if ($timeout) {
static $recursions = 0;
if (time() > (TIMENOW + $timeout)) {
return [
'timeout' => true,
'recs' => $recursions
];
}
$recursions++;
}
if (is_array($var)) {
foreach ($var as $k => $v) {
if (is_array($v)) {
@ -312,7 +322,7 @@ function array_deep(&$var, $fn, $one_dimensional = false, $array_only = false)
} elseif ($array_only) {
$var[$k] = $fn($v);
} else {
array_deep($var[$k], $fn);
array_deep($var[$k], $fn, timeout: $timeout);
}
} elseif (!$array_only) {
$var[$k] = $fn($v);