kopia lustrzana https://github.com/nextcloud/social
save/update
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>pull/352/head
rodzic
898993a67d
commit
524c7aa141
|
@ -66,6 +66,29 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* insert cache about an Actor in database.
|
||||||
|
*
|
||||||
|
* @param Document $document
|
||||||
|
*/
|
||||||
|
public function update(Document $document) {
|
||||||
|
$qb = $this->getCacheDocumentsInsertSql();
|
||||||
|
$qb->set('type', $qb->createNamedParameter($document->getType()))
|
||||||
|
->set('url', $qb->createNamedParameter($document->getUrl()))
|
||||||
|
->set('media_type', $qb->createNamedParameter($document->getMediaType()))
|
||||||
|
->set('mime_type', $qb->createNamedParameter($document->getMimeType()))
|
||||||
|
->set('error', $qb->createNamedParameter($document->getError()))
|
||||||
|
->set('local_copy', $qb->createNamedParameter($document->getLocalCopy()))
|
||||||
|
->set('parent_id', $qb->createNamedParameter($document->getParentId()))
|
||||||
|
->set('public', $qb->createNamedParameter(($document->isPublic()) ? '1' : '0'))
|
||||||
|
->set(
|
||||||
|
'creation',
|
||||||
|
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
|
||||||
|
);
|
||||||
|
$qb->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Document $document
|
* @param Document $document
|
||||||
*/
|
*/
|
||||||
|
@ -99,7 +122,7 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder {
|
||||||
* @return Document
|
* @return Document
|
||||||
* @throws CacheDocumentDoesNotExistException
|
* @throws CacheDocumentDoesNotExistException
|
||||||
*/
|
*/
|
||||||
public function getBySource(string $url) {
|
public function getByUrl(string $url) {
|
||||||
$qb = $this->getCacheDocumentsSelectSql();
|
$qb = $this->getCacheDocumentsSelectSql();
|
||||||
$this->limitToUrl($qb, $url);
|
$this->limitToUrl($qb, $url);
|
||||||
|
|
||||||
|
@ -143,6 +166,24 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Document $item
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isDuplicate(Document $item): bool {
|
||||||
|
$qb = $this->getCacheDocumentsSelectSql();
|
||||||
|
$this->limitToUrl($qb, $item->getUrl());
|
||||||
|
$this->limitToParentId($qb, $item->getParentId());
|
||||||
|
|
||||||
|
$cursor = $qb->execute();
|
||||||
|
$data = $cursor->fetch();
|
||||||
|
$cursor->closeCursor();
|
||||||
|
|
||||||
|
return ($data !== false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Document[]
|
* @return Document[]
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
|
@ -185,5 +226,6 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder {
|
||||||
$qb->execute();
|
$qb->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -346,6 +346,17 @@ class CoreRequestBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Limit the request to the parent_id
|
||||||
|
*
|
||||||
|
* @param IQueryBuilder $qb
|
||||||
|
* @param string $parentId
|
||||||
|
*/
|
||||||
|
protected function limitToParentId(IQueryBuilder &$qb, string $parentId) {
|
||||||
|
$this->limitToDBField($qb, 'parent_id', $parentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param IQueryBuilder $qb
|
* @param IQueryBuilder $qb
|
||||||
* @param int $since
|
* @param int $since
|
||||||
|
|
|
@ -33,6 +33,7 @@ namespace OCA\Social\Model\ActivityPub\Object;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use JsonSerializable;
|
use JsonSerializable;
|
||||||
|
use OCA\Social\Exceptions\InvalidOriginException;
|
||||||
use OCA\Social\Exceptions\UrlCloudException;
|
use OCA\Social\Exceptions\UrlCloudException;
|
||||||
use OCA\Social\Model\ActivityPub\ACore;
|
use OCA\Social\Model\ActivityPub\ACore;
|
||||||
|
|
||||||
|
@ -218,6 +219,7 @@ class Document extends ACore implements JsonSerializable {
|
||||||
* @param array $data
|
* @param array $data
|
||||||
*
|
*
|
||||||
* @throws UrlCloudException
|
* @throws UrlCloudException
|
||||||
|
* @throws InvalidOriginException
|
||||||
*/
|
*/
|
||||||
public function import(array $data) {
|
public function import(array $data) {
|
||||||
parent::import($data);
|
parent::import($data);
|
||||||
|
@ -226,6 +228,8 @@ class Document extends ACore implements JsonSerializable {
|
||||||
|
|
||||||
if ($this->getId() === '') {
|
if ($this->getId() === '') {
|
||||||
$this->generateUniqueId('/documents/g');
|
$this->generateUniqueId('/documents/g');
|
||||||
|
} else {
|
||||||
|
$this->checkOrigin($this->getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -238,14 +238,14 @@ class DocumentService {
|
||||||
$icon->setMediaType('');
|
$icon->setMediaType('');
|
||||||
$icon->setLocalCopy('avatar');
|
$icon->setLocalCopy('avatar');
|
||||||
|
|
||||||
$this->cacheDocumentsRequest->deleteByUrl($icon->getUrl());
|
$interface = AP::$activityPub->getInterfaceFromType(Image::TYPE);
|
||||||
$this->cacheDocumentsRequest->save($icon);
|
$interface->save($icon);
|
||||||
|
|
||||||
$actor->setAvatarVersion($versionCurrent);
|
$actor->setAvatarVersion($versionCurrent);
|
||||||
$this->actorRequest->update($actor);
|
$this->actorRequest->update($actor);
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
$icon = $this->cacheDocumentsRequest->getBySource($url);
|
$icon = $this->cacheDocumentsRequest->getByUrl($url);
|
||||||
} catch (CacheDocumentDoesNotExistException $e) {
|
} catch (CacheDocumentDoesNotExistException $e) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue