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
|
||||
*/
|
||||
|
@ -99,7 +122,7 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder {
|
|||
* @return Document
|
||||
* @throws CacheDocumentDoesNotExistException
|
||||
*/
|
||||
public function getBySource(string $url) {
|
||||
public function getByUrl(string $url) {
|
||||
$qb = $this->getCacheDocumentsSelectSql();
|
||||
$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[]
|
||||
* @throws Exception
|
||||
|
@ -185,5 +226,6 @@ class CacheDocumentsRequest extends CacheDocumentsRequestBuilder {
|
|||
$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 int $since
|
||||
|
|
|
@ -33,6 +33,7 @@ namespace OCA\Social\Model\ActivityPub\Object;
|
|||
|
||||
use DateTime;
|
||||
use JsonSerializable;
|
||||
use OCA\Social\Exceptions\InvalidOriginException;
|
||||
use OCA\Social\Exceptions\UrlCloudException;
|
||||
use OCA\Social\Model\ActivityPub\ACore;
|
||||
|
||||
|
@ -218,6 +219,7 @@ class Document extends ACore implements JsonSerializable {
|
|||
* @param array $data
|
||||
*
|
||||
* @throws UrlCloudException
|
||||
* @throws InvalidOriginException
|
||||
*/
|
||||
public function import(array $data) {
|
||||
parent::import($data);
|
||||
|
@ -226,6 +228,8 @@ class Document extends ACore implements JsonSerializable {
|
|||
|
||||
if ($this->getId() === '') {
|
||||
$this->generateUniqueId('/documents/g');
|
||||
} else {
|
||||
$this->checkOrigin($this->getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -238,14 +238,14 @@ class DocumentService {
|
|||
$icon->setMediaType('');
|
||||
$icon->setLocalCopy('avatar');
|
||||
|
||||
$this->cacheDocumentsRequest->deleteByUrl($icon->getUrl());
|
||||
$this->cacheDocumentsRequest->save($icon);
|
||||
$interface = AP::$activityPub->getInterfaceFromType(Image::TYPE);
|
||||
$interface->save($icon);
|
||||
|
||||
$actor->setAvatarVersion($versionCurrent);
|
||||
$this->actorRequest->update($actor);
|
||||
} else {
|
||||
try {
|
||||
$icon = $this->cacheDocumentsRequest->getBySource($url);
|
||||
$icon = $this->cacheDocumentsRequest->getByUrl($url);
|
||||
} catch (CacheDocumentDoesNotExistException $e) {
|
||||
return '';
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue