0
0
Fork 0
mirror of https://github.com/nextcloud/server.git synced 2025-02-07 01:50:38 +00:00
nextcloud_server/apps/files_external/lib/Lib/IdentifierTrait.php
Andy Scherzinger c1555fc33e
chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-06-06 18:05:37 +02:00

62 lines
1.5 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCA\Files_External\Lib;
/**
* Trait for objects requiring an identifier (and/or identifier aliases)
* Also supports deprecation to a different object, linking the objects
*/
trait IdentifierTrait {
protected string $identifier = '';
/** @var string[] */
protected array $identifierAliases = [];
protected ?IIdentifier $deprecateTo = null;
public function getIdentifier(): string {
return $this->identifier;
}
public function setIdentifier(string $identifier): self {
$this->identifier = $identifier;
$this->identifierAliases[] = $identifier;
return $this;
}
/**
* @return string[]
*/
public function getIdentifierAliases(): array {
return $this->identifierAliases;
}
public function addIdentifierAlias(string $alias): self {
$this->identifierAliases[] = $alias;
return $this;
}
public function getDeprecateTo(): ?IIdentifier {
return $this->deprecateTo;
}
public function deprecateTo(IIdentifier $destinationObject): self {
$this->deprecateTo = $destinationObject;
return $this;
}
public function jsonSerializeIdentifier(): array {
$data = [
'identifier' => $this->identifier,
'identifierAliases' => $this->identifierAliases,
];
if ($this->deprecateTo) {
$data['deprecateTo'] = $this->deprecateTo->getIdentifier();
}
return $data;
}
}