diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2020-09-02 12:07:57 -0100 |
---|---|---|
committer | Maxence Lange <maxence@artificial-owl.com> | 2020-09-02 12:07:57 -0100 |
commit | cf8a326c2da03f7a71577e7e26111f4ff0a17421 (patch) | |
tree | eb71c5701e0ecd256e3701e98e234209c036a01b /lib | |
parent | 875203b75a092fb62343c062f5429613a9bedc29 (diff) |
avatar on post
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Controller/ApiController.php | 1 | ||||
-rw-r--r-- | lib/Db/ActionsRequestBuilder.php | 5 | ||||
-rw-r--r-- | lib/Db/CoreRequestBuilder.php | 27 | ||||
-rw-r--r-- | lib/Db/FollowsRequestBuilder.php | 5 | ||||
-rw-r--r-- | lib/Db/SocialCoreQueryBuilder.php | 16 | ||||
-rw-r--r-- | lib/Db/SocialCrossQueryBuilder.php | 5 | ||||
-rw-r--r-- | lib/Db/StreamRequest.php | 14 | ||||
-rw-r--r-- | lib/Db/StreamRequestBuilder.php | 2 | ||||
-rw-r--r-- | lib/Model/ActivityPub/Actor/Person.php | 16 | ||||
-rw-r--r-- | lib/Model/ActivityPub/Stream.php | 2 |
10 files changed, 49 insertions, 44 deletions
diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 67b10019..8635348e 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -140,7 +140,6 @@ class ApiController extends Controller { /** * @NoCSRFRequired - * @NoAdminRequired * @PublicPage * * @return DataResponse diff --git a/lib/Db/ActionsRequestBuilder.php b/lib/Db/ActionsRequestBuilder.php index 3178b8d8..822643f6 100644 --- a/lib/Db/ActionsRequestBuilder.php +++ b/lib/Db/ActionsRequestBuilder.php @@ -157,15 +157,16 @@ class ActionsRequestBuilder extends CoreRequestBuilder { /** * @param array $data + * @param SocialQueryBuilder $qb * * @return ACore */ - public function parseActionsSelectSql($data): ACore { + public function parseActionsSelectSql($data, SocialQueryBuilder $qb): ACore { $item = new ACore(); $item->importFromDatabase($data); try { - $actor = $this->parseCacheActorsLeftJoin($data); + $actor = $qb->parseLeftJoinCacheActors($data); $actor->setCompleteDetails(true); $item->setActor($actor); diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index 890ea0c7..78f64bfd 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -38,7 +38,6 @@ use Doctrine\DBAL\Query\QueryBuilder; use Exception; use OC; use OC\DB\SchemaWrapper; -use OCA\Social\AP; use OCA\Social\Exceptions\InvalidResourceException; use OCA\Social\Model\ActivityPub\Actor\Person; use OCA\Social\Model\ActivityPub\Object\Follow; @@ -923,32 +922,6 @@ class CoreRequestBuilder { * @return Person * @throws InvalidResourceException */ - public function parseCacheActorsLeftJoin(array $data): Person { - $new = []; - - foreach ($data as $k => $v) { - if (substr($k, 0, 11) === 'cacheactor_') { - $new[substr($k, 11)] = $v; - } - } - - $actor = new Person(); - $actor->importFromDatabase($new); - - if (!AP::$activityPub->isActor($actor)) { - throw new InvalidResourceException(); - } - - return $actor; - } - - - /** - * @param array $data - * - * @return Person - * @throws InvalidResourceException - */ protected function parseAccountsLeftJoin(array $data): Person { $new = []; foreach ($data as $k => $v) { diff --git a/lib/Db/FollowsRequestBuilder.php b/lib/Db/FollowsRequestBuilder.php index ff11642f..89fc0d4e 100644 --- a/lib/Db/FollowsRequestBuilder.php +++ b/lib/Db/FollowsRequestBuilder.php @@ -127,15 +127,16 @@ class FollowsRequestBuilder extends CoreRequestBuilder { /** * @param array $data + * @param SocialQueryBuilder $qb * * @return Follow */ - public function parseFollowsSelectSql($data): Follow { + public function parseFollowsSelectSql($data, SocialQueryBuilder $qb): Follow { $follow = new Follow(); $follow->importFromDatabase($data); try { - $actor = $this->parseCacheActorsLeftJoin($data); + $actor = $qb->parseLeftJoinCacheActors($data); $actor->setCompleteDetails(true); $this->assignDetails($actor, $data); diff --git a/lib/Db/SocialCoreQueryBuilder.php b/lib/Db/SocialCoreQueryBuilder.php index d47712da..391a42e6 100644 --- a/lib/Db/SocialCoreQueryBuilder.php +++ b/lib/Db/SocialCoreQueryBuilder.php @@ -32,8 +32,12 @@ namespace OCA\Social\Db; use daita\MySmallPhpTools\Db\ExtendedQueryBuilder; +use OC\SystemConfig; use OCA\Social\Model\ActivityPub\Actor\Person; use OCP\DB\QueryBuilder\ICompositeExpression; +use OCP\IDBConnection; +use OCP\ILogger; +use OCP\IURLGenerator; /** @@ -44,6 +48,9 @@ use OCP\DB\QueryBuilder\ICompositeExpression; class SocialCoreQueryBuilder extends ExtendedQueryBuilder { + /** @var IURLGenerator */ + protected $urlGenerator; + /** @var Person */ private $viewer = null; @@ -52,6 +59,15 @@ class SocialCoreQueryBuilder extends ExtendedQueryBuilder { private $chunk = 0; + public function __construct( + IDBConnection $connection, SystemConfig $systemConfig, ILogger $logger, IURLGenerator $urlGenerator + ) { + parent::__construct($connection, $systemConfig, $logger); + + $this->urlGenerator = $urlGenerator; + } + + /** * @param int $chunk * diff --git a/lib/Db/SocialCrossQueryBuilder.php b/lib/Db/SocialCrossQueryBuilder.php index d5540578..12898b88 100644 --- a/lib/Db/SocialCrossQueryBuilder.php +++ b/lib/Db/SocialCrossQueryBuilder.php @@ -145,6 +145,11 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder { $actor = new Person(); $actor->importFromDatabase($new); + $actor->setAvatar( + $this->urlGenerator->linkToRouteAbsolute('social.Local.globalActorAvatar') . '?id=' + . $actor->getId() + ); + if (!AP::$activityPub->isActor($actor)) { throw new InvalidResourceException(); } diff --git a/lib/Db/StreamRequest.php b/lib/Db/StreamRequest.php index 4f8d7589..2190b622 100644 --- a/lib/Db/StreamRequest.php +++ b/lib/Db/StreamRequest.php @@ -44,7 +44,6 @@ use OCA\Social\Model\ActivityPub\Internal\SocialAppNotification; use OCA\Social\Model\ActivityPub\Object\Document; use OCA\Social\Model\ActivityPub\Object\Note; use OCA\Social\Model\ActivityPub\Stream; -use OCA\Social\Service\CacheActorService; use OCA\Social\Service\ConfigService; use OCA\Social\Service\MiscService; use OCP\DB\QueryBuilder\IQueryBuilder; @@ -60,9 +59,6 @@ use OCP\ILogger; class StreamRequest extends StreamRequestBuilder { - /** @var CacheActorService */ - private $cacheActorService; - /** @var StreamDestRequest */ private $streamDestRequest; @@ -75,20 +71,17 @@ class StreamRequest extends StreamRequestBuilder { * * @param IDBConnection $connection * @param ILogger $logger - * @param CacheActorService $cacheActorService * @param StreamDestRequest $streamDestRequest * @param StreamTagsRequest $streamTagsRequest * @param ConfigService $configService * @param MiscService $miscService */ public function __construct( - IDBConnection $connection, ILogger $logger, CacheActorService $cacheActorService, - StreamDestRequest $streamDestRequest, StreamTagsRequest $streamTagsRequest, - ConfigService $configService, MiscService $miscService + IDBConnection $connection, ILogger $logger, StreamDestRequest $streamDestRequest, + StreamTagsRequest $streamTagsRequest, ConfigService $configService, MiscService $miscService ) { parent::__construct($connection, $logger, $configService, $miscService); - $this->cacheActorService = $cacheActorService; $this->streamDestRequest = $streamDestRequest; $this->streamTagsRequest = $streamTagsRequest; } @@ -395,7 +388,8 @@ class StreamRequest extends StreamRequestBuilder { * @return Stream[] * @throws DateTimeException */ - public function getTimelineHome(int $since = 0, int $limit = 5, int $format = Stream::FORMAT_ACTIVITYPUB): array { + public function getTimelineHome(int $since = 0, int $limit = 5, int $format = Stream::FORMAT_ACTIVITYPUB + ): array { $qb = $this->getStreamSelectSql($format); $qb->setChunk(1); diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php index 669dc4a1..f210c948 100644 --- a/lib/Db/StreamRequestBuilder.php +++ b/lib/Db/StreamRequestBuilder.php @@ -220,7 +220,7 @@ class StreamRequestBuilder extends CoreRequestBuilder { } try { - $actor = $this->parseCacheActorsLeftJoin($data); + $actor = $qb->parseLeftJoinCacheActors($data); $actor->setExportFormat($qb->getFormat()); $item->setCompleteDetails(true); $item->setActor($actor); diff --git a/lib/Model/ActivityPub/Actor/Person.php b/lib/Model/ActivityPub/Actor/Person.php index 81c5b44d..f9f3b5c3 100644 --- a/lib/Model/ActivityPub/Actor/Person.php +++ b/lib/Model/ActivityPub/Actor/Person.php @@ -110,6 +110,9 @@ class Person extends ACore implements IQueryRow, JsonSerializable { private $featured = ''; /** @var string */ + private $avatar = ''; + + /** @var string */ private $header = ''; /** @var bool */ @@ -237,7 +240,18 @@ class Person extends ACore implements IQueryRow, JsonSerializable { ->getId(); } - return ''; + return $this->avatar; + } + + /** + * @param string $avatar + * + * @return $this + */ + public function setAvatar(string $avatar): self { + $this->avatar = $avatar; + + return $this; } diff --git a/lib/Model/ActivityPub/Stream.php b/lib/Model/ActivityPub/Stream.php index fe8ac0a9..88dd1fdd 100644 --- a/lib/Model/ActivityPub/Stream.php +++ b/lib/Model/ActivityPub/Stream.php @@ -495,6 +495,8 @@ class Stream extends ACore implements IQueryRow, JsonSerializable { 'reblogged' => false, 'muted' => false, 'bookmarked' => false, + 'uri' => $this->getId(), + 'url' => $this->getId(), "reblog" => null, "created_at" => date('Y-m-d\TH:i:s', $this->getPublishedTime()) . '.000Z' ]; |