summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2023-03-15 19:27:15 -0100
committerGitHub <noreply@github.com>2023-03-15 19:27:15 -0100
commita1f2a8a799baa1d0a08638d6bcc1e37664a1382d (patch)
treec7ab08e1c72968ac9e95a5e9d28de0cb66b76c64
parent55905acd54ca13370e6f158c5db7717586cc0bd8 (diff)
parentd7f6bf8d5b5d4b14ff48530b1d66a93aad6941fd (diff)
Merge pull request #1663 from nextcloud/fix/noid/avatar-3
add icon to actor
-rw-r--r--lib/Db/CacheActorsRequestBuilder.php5
-rw-r--r--lib/Db/SocialCrossQueryBuilder.php2
-rw-r--r--lib/Model/ActivityPub/Actor/Person.php55
3 files changed, 38 insertions, 24 deletions
diff --git a/lib/Db/CacheActorsRequestBuilder.php b/lib/Db/CacheActorsRequestBuilder.php
index 04df7947..d174d747 100644
--- a/lib/Db/CacheActorsRequestBuilder.php
+++ b/lib/Db/CacheActorsRequestBuilder.php
@@ -36,7 +36,6 @@ use OCA\Social\Model\ActivityPub\Actor\Person;
use OCA\Social\Model\ActivityPub\Stream;
use OCA\Social\Tools\Exceptions\RowNotFoundException;
use OCA\Social\Tools\Traits\TArrayTools;
-use OCP\DB\QueryBuilder\IQueryBuilder;
class CacheActorsRequestBuilder extends CoreRequestBuilder {
use TArrayTools;
@@ -58,9 +57,9 @@ class CacheActorsRequestBuilder extends CoreRequestBuilder {
/**
* Base of the Sql Update request
*
- * @return IQueryBuilder
+ * @return SocialQueryBuilder
*/
- protected function getCacheActorsUpdateSql(): IQueryBuilder {
+ protected function getCacheActorsUpdateSql(): SocialQueryBuilder {
$qb = $this->getQueryBuilder();
$qb->update(self::TABLE_CACHE_ACTORS);
diff --git a/lib/Db/SocialCrossQueryBuilder.php b/lib/Db/SocialCrossQueryBuilder.php
index 39487768..884cbbbd 100644
--- a/lib/Db/SocialCrossQueryBuilder.php
+++ b/lib/Db/SocialCrossQueryBuilder.php
@@ -170,8 +170,6 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder {
}
$expr = $this->expr();
- $func = $this->func();
-
$pf = (($alias === '') ? $this->getDefaultSelectAlias() : $alias);
$this->selectAlias('cd.id', 'cachedocument_id')
->selectAlias('cd.type', 'cachedocument_type')
diff --git a/lib/Model/ActivityPub/Actor/Person.php b/lib/Model/ActivityPub/Actor/Person.php
index 158aa692..3f8f74ad 100644
--- a/lib/Model/ActivityPub/Actor/Person.php
+++ b/lib/Model/ActivityPub/Actor/Person.php
@@ -697,6 +697,12 @@ class Person extends ACore implements IQueryRow, JsonSerializable {
->setFeatured($this->validate(self::AS_URL, 'featured', $data, ''))
->setDetailsAll($this->getArray('details', $data, []));
+ if ($this->hasIcon()) {
+ $this->setAvatar($this->getIcon()->getUrl());
+ } else {
+ $this->setAvatar($this->getAvatar());
+ }
+
try {
$cTime = new DateTime($this->get('creation', $data, 'yesterday'));
$this->setCreation($cTime->getTimestamp());
@@ -722,27 +728,38 @@ class Person extends ACore implements IQueryRow, JsonSerializable {
* @return array
*/
public function exportAsActivityPub(): array {
+ $data = [
+ 'aliases' => [
+ $this->getUrlSocial() . '@' . $this->getPreferredUsername(),
+ $this->getUrlSocial() . 'users/' . $this->getPreferredUsername()
+ ],
+ 'preferredUsername' => $this->getPreferredUsername(),
+ 'name' => $this->getName(),
+ 'inbox' => $this->getInbox(),
+ 'outbox' => $this->getOutbox(),
+ 'account' => $this->getAccount(),
+ 'following' => $this->getFollowing(),
+ 'followers' => $this->getFollowers(),
+ 'endpoints' => ['sharedInbox' => $this->getSharedInbox()],
+ 'publicKey' => [
+ 'id' => $this->getId() . '#main-key',
+ 'owner' => $this->getId(),
+ 'publicKeyPem' => $this->getPublicKey()
+ ]
+ ];
+
+ if ($this->hasIcon()) {
+ $icon = $this->getIcon();
+ $data['icon'] = [
+ 'type' => $icon->getType(),
+ 'mediaType' => $icon->getMediaType(),
+ 'url' => $icon->getUrl()
+ ];
+ }
+
$result = array_merge(
parent::exportAsActivityPub(),
- [
- 'aliases' => [
- $this->getUrlSocial() . '@' . $this->getPreferredUsername(),
- $this->getUrlSocial() . 'users/' . $this->getPreferredUsername()
- ],
- 'preferredUsername' => $this->getPreferredUsername(),
- 'name' => $this->getName(),
- 'inbox' => $this->getInbox(),
- 'outbox' => $this->getOutbox(),
- 'account' => $this->getAccount(),
- 'following' => $this->getFollowing(),
- 'followers' => $this->getFollowers(),
- 'endpoints' => ['sharedInbox' => $this->getSharedInbox()],
- 'publicKey' => [
- 'id' => $this->getId() . '#main-key',
- 'owner' => $this->getId(),
- 'publicKeyPem' => $this->getPublicKey()
- ]
- ]
+ $data
);
if ($this->isCompleteDetails()) {