mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-10 14:08:40 +00:00
Fix uri shortening for query para duplication
This commit is contained in:
parent
1e0a841447
commit
8e292966c9
|
|
@ -194,25 +194,25 @@ final class UriFactory
|
||||||
private static function unique(string $url) : string
|
private static function unique(string $url) : string
|
||||||
{
|
{
|
||||||
$parts = \explode('&', \str_replace('?', '&', $url));
|
$parts = \explode('&', \str_replace('?', '&', $url));
|
||||||
|
$query = '';
|
||||||
|
|
||||||
if (\count($parts) > 1) {
|
if (\count($parts) > 1) {
|
||||||
$pars = \array_slice($parts, 1);
|
$pars = \array_slice($parts, 1);
|
||||||
$length = \count($pars);
|
$length = \count($pars);
|
||||||
$url = $parts[0];
|
$url = $parts[0];
|
||||||
$first = true;
|
$keys = [];
|
||||||
|
|
||||||
for ($i = 0; $i < $length; ++$i) {
|
for ($i = $length - 1; $i > -1; --$i) {
|
||||||
$spl = \explode('=', $pars[$i]);
|
$spl = \explode('=', $pars[$i]);
|
||||||
|
|
||||||
if (isset($spl[1])) {
|
if (isset($spl[1]) && !\in_array($spl[0], $keys)) {
|
||||||
$url .= $first ? '?' : '&';
|
$keys[] = $spl[0];
|
||||||
$url .= $spl[0] . '=' . $spl[1];
|
$query = $spl[0] . '=' . $spl[1] . '&' . $query;
|
||||||
$first = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $url;
|
return $url . ((!empty($query) && $query[0] !== '&') ? '?' . \rtrim($query, '&') : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user