Update Composer packages
This commit is contained in:
parent
0320235f6c
commit
a8b68fb61b
378 changed files with 28466 additions and 28852 deletions
94
kirby/src/Uuid/Uri.php
Normal file
94
kirby/src/Uuid/Uri.php
Normal file
|
@ -0,0 +1,94 @@
|
|||
<?php
|
||||
|
||||
namespace Kirby\Uuid;
|
||||
|
||||
use Kirby\Http\Uri as BaseUri;
|
||||
use Kirby\Toolkit\Str;
|
||||
|
||||
/**
|
||||
* Uri protocol for UUIDs
|
||||
* @since 3.8.0
|
||||
*
|
||||
* @package Kirby Uuid
|
||||
* @author Nico Hoffmann <nico@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Uri extends BaseUri
|
||||
{
|
||||
/**
|
||||
* Supported schemes
|
||||
*/
|
||||
public static array $schemes = [
|
||||
'site',
|
||||
'page',
|
||||
'file',
|
||||
'user',
|
||||
// TODO: acitivate for uuid-block-structure-support
|
||||
// 'block',
|
||||
// 'struct'
|
||||
];
|
||||
|
||||
public function __construct(array|string $props = [], array $inject = [])
|
||||
{
|
||||
// treat `site://` differently:
|
||||
// there is no host for site type, rest is always the path
|
||||
if (
|
||||
is_string($props) === true &&
|
||||
Str::startsWith($props, 'site://') === true
|
||||
) {
|
||||
return parent::__construct([
|
||||
'scheme' => 'site',
|
||||
'host' => '',
|
||||
'path' => Str::after($props, 'site://')
|
||||
]);
|
||||
}
|
||||
|
||||
return parent::__construct($props, $inject);
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom base method to ensure that
|
||||
* scheme is always included
|
||||
*/
|
||||
public function base(): string|null
|
||||
{
|
||||
return $this->scheme . '://' . $this->host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ID part of the UUID string
|
||||
* (and sets it when new one passed)
|
||||
*/
|
||||
public function host(string $host = null): string|null
|
||||
{
|
||||
if ($host !== null) {
|
||||
return $this->host = $host;
|
||||
}
|
||||
|
||||
return $this->host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the full UUID string
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
$url = parent::toString();
|
||||
|
||||
// correction for protocols without host,
|
||||
// e.g. mainly `site://`
|
||||
$url = Str::replace($url, ':///', '://');
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the scheme as model type
|
||||
*/
|
||||
public function type(): string
|
||||
{
|
||||
return $this->scheme;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue