sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.2 KiB
95 lines
2.2 KiB
<?php
|
|
|
|
namespace Illuminate\Routing;
|
|
|
|
use Illuminate\Support\Arr;
|
|
|
|
class RouteGroup
|
|
{
|
|
/**
|
|
* Merge route groups into a new array.
|
|
*
|
|
* @param array $new
|
|
* @param array $old
|
|
* @return array
|
|
*/
|
|
public static function merge($new, $old)
|
|
{
|
|
if (isset($new['domain'])) {
|
|
unset($old['domain']);
|
|
}
|
|
|
|
$new = array_merge(static::formatAs($new, $old), [
|
|
'namespace' => static::formatNamespace($new, $old),
|
|
'prefix' => static::formatPrefix($new, $old),
|
|
'where' => static::formatWhere($new, $old),
|
|
]);
|
|
|
|
return array_merge_recursive(Arr::except(
|
|
$old, ['namespace', 'prefix', 'where', 'as']
|
|
), $new);
|
|
}
|
|
|
|
/**
|
|
* Format the namespace for the new group attributes.
|
|
*
|
|
* @param array $new
|
|
* @param array $old
|
|
* @return string|null
|
|
*/
|
|
protected static function formatNamespace($new, $old)
|
|
{
|
|
if (isset($new['namespace'])) {
|
|
return isset($old['namespace'])
|
|
? trim($old['namespace'], '\\').'\\'.trim($new['namespace'], '\\')
|
|
: trim($new['namespace'], '\\');
|
|
}
|
|
|
|
return $old['namespace'] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Format the prefix for the new group attributes.
|
|
*
|
|
* @param array $new
|
|
* @param array $old
|
|
* @return string|null
|
|
*/
|
|
protected static function formatPrefix($new, $old)
|
|
{
|
|
$old = $old['prefix'] ?? null;
|
|
|
|
return isset($new['prefix']) ? trim($old, '/').'/'.trim($new['prefix'], '/') : $old;
|
|
}
|
|
|
|
/**
|
|
* Format the "wheres" for the new group attributes.
|
|
*
|
|
* @param array $new
|
|
* @param array $old
|
|
* @return array
|
|
*/
|
|
protected static function formatWhere($new, $old)
|
|
{
|
|
return array_merge(
|
|
$old['where'] ?? [],
|
|
$new['where'] ?? []
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Format the "as" clause of the new group attributes.
|
|
*
|
|
* @param array $new
|
|
* @param array $old
|
|
* @return array
|
|
*/
|
|
protected static function formatAs($new, $old)
|
|
{
|
|
if (isset($old['as'])) {
|
|
$new['as'] = $old['as'].($new['as'] ?? '');
|
|
}
|
|
|
|
return $new;
|
|
}
|
|
}
|
|
|