%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps/circles/lib/Model/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps/circles/lib/Model/SharingFrame.php |
<?php
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Circles\Model;
use OCA\Circles\AppInfo\Application;
use OCA\Circles\Exceptions\SharingFrameSourceCannotBeAppCirclesException;
use OCA\Circles\Service\MiscService;
/**
* @deprecated
* Class SharingFrame
*
* @package OCA\Circles\Model
*/
class SharingFrame implements \JsonSerializable {
/** @var string */
private $source;
/** @var string */
private $type;
/** @var DeprecatedCircle */
private $circle;
/** @var string */
private $author;
/** @var string */
private $cloudId;
/** @var array */
private $payload;
/** @var array */
private $headers;
/** @var int */
private $creation;
/** @var string */
private $uniqueId;
public function __construct($source, $type) {
$this->source = (string)$source;
$this->type = (string)$type;
}
/**
* @return string
*/
public function getSource() {
return $this->source;
}
/**
* @return string
*/
public function getType() {
return $this->type;
}
/**
* @param DeprecatedCircle $circle
*/
public function setCircle($circle) {
$this->circle = $circle;
}
/**
* @return DeprecatedCircle
*/
public function getCircle() {
return $this->circle;
}
/**
* @param string $author
*/
public function setAuthor($author) {
$this->author = (string)$author;
}
/**
* @return string
*/
public function getAuthor() {
return $this->author;
}
/**
* @param string $cloudId
*/
public function setCloudId($cloudId) {
$this->cloudId = $cloudId;
}
/**
* @return string
*/
public function getCloudId() {
return $this->cloudId;
}
/**
* @param string $uniqueId
*
* @return SharingFrame
*/
public function setUniqueId($uniqueId) {
$this->uniqueId = (string)$uniqueId;
return $this;
}
/**
* @return string
*/
public function getUniqueId() {
return $this->uniqueId;
}
/**
* @return SharingFrame
*/
public function generateUniqueId() {
$uniqueId = bin2hex(openssl_random_pseudo_bytes(16));
$this->setUniqueId($uniqueId);
return $this;
}
/**
* @param array $payload
*/
public function setPayload($payload) {
$this->payload = $payload;
}
/**
* @param bool $asJson
*
* @return array|string
*/
public function getPayload($asJson = false) {
if ($asJson) {
return json_encode($this->payload);
}
return $this->payload;
}
/**
* @param array $headers
*/
public function setHeaders($headers) {
$this->headers = $headers;
}
/**
* @param bool $asJson
*
* @return array|string
*/
public function getHeaders($asJson = false) {
if ($asJson) {
return json_encode($this->headers);
}
return $this->headers;
}
/**
* @param string $k
*
* @return string
*/
public function getHeader($k) {
if ($this->headers === null) {
return null;
}
$k = (string)$k;
if (!key_exists($k, $this->headers)) {
return null;
}
return $this->headers[$k];
}
/**
* @param string $k
* @param string $v
*/
public function setHeader($k, $v) {
$this->headers[(string)$k] = $v;
}
/**
* @param int $creation
*/
public function setCreation($creation) {
if ($creation === null) {
return;
}
$this->creation = $creation;
}
/**
* @return int
*/
public function getCreation() {
return $this->creation;
}
/**
* @return bool
*/
public function isLocal() {
return ($this->getCloudId() === null);
}
/**
* @return bool
*/
public function is0Circle() {
return ($this->getCloudId() === null);
}
/**
* @throws SharingFrameSourceCannotBeAppCirclesException
*/
public function cannotBeFromCircles() {
if (strtolower($this->getSource()) === Application::APP_ID) {
throw new SharingFrameSourceCannotBeAppCirclesException();
}
}
public function jsonSerialize(): array {
return [
'unique_id' => $this->getUniqueId(),
'circle' => $this->getCircle()
->getArray(false, true),
'source' => $this->getSource(),
'type' => $this->getType(),
'author' => $this->getAuthor(),
'cloud_id' => $this->getCloudId(),
'headers' => $this->getHeaders(),
'payload' => $this->getPayload(),
'creation' => $this->getCreation(),
];
}
public static function fromJSON($json) {
$arr = json_decode($json, true);
return self::fromArray($arr);
}
public static function fromArray($arr) {
if (!is_array($arr) || !key_exists('source', $arr)) {
return null;
}
$share = new SharingFrame($arr['source'], $arr['type']);
$share->setCircle(self::getCircleFromArray($arr));
$share->setHeaders(self::getHeadersFromArray($arr));
if (key_exists('cloud_id', $arr)) {
$share->setCloudID($arr['cloud_id']);
}
$share->setUniqueId($arr['unique_id']);
$share->setAuthor($arr['author']);
$share->setPayload($arr['payload']);
$share->setCreation($arr['creation']);
return $share;
}
/**
* @param array $arr
*
* @return array
*/
private static function getHeadersFromArray($arr) {
$headers = [];
if (key_exists('headers', $arr)) {
$headers = $arr['headers'];
}
return $headers;
}
/**
* @param array $arr
*
* @return DeprecatedCircle
*/
private static function getCircleFromArray($arr) {
return DeprecatedCircle::fromArray(MiscService::get($arr, 'circle', null));
}
}