summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2020-09-02 12:07:57 -0100
committerMaxence Lange <maxence@artificial-owl.com>2020-09-02 12:07:57 -0100
commitcf8a326c2da03f7a71577e7e26111f4ff0a17421 (patch)
treeeb71c5701e0ecd256e3701e98e234209c036a01b /lib
parent875203b75a092fb62343c062f5429613a9bedc29 (diff)
avatar on post
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Controller/ApiController.php1
-rw-r--r--lib/Db/ActionsRequestBuilder.php5
-rw-r--r--lib/Db/CoreRequestBuilder.php27
-rw-r--r--lib/Db/FollowsRequestBuilder.php5
-rw-r--r--lib/Db/SocialCoreQueryBuilder.php16
-rw-r--r--lib/Db/SocialCrossQueryBuilder.php5
-rw-r--r--lib/Db/StreamRequest.php14
-rw-r--r--lib/Db/StreamRequestBuilder.php2
-rw-r--r--lib/Model/ActivityPub/Actor/Person.php16
-rw-r--r--lib/Model/ActivityPub/Stream.php2
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'
];