Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/985/head
Maxence Lange 2020-09-02 12:07:57 -01:00
rodzic 875203b75a
commit cf8a326c2d
10 zmienionych plików z 49 dodań i 44 usunięć

Wyświetl plik

@ -140,7 +140,6 @@ class ApiController extends Controller {
/**
* @NoCSRFRequired
* @NoAdminRequired
* @PublicPage
*
* @return DataResponse

Wyświetl plik

@ -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);

Wyświetl plik

@ -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;
@ -917,32 +916,6 @@ class CoreRequestBuilder {
}
/**
* @param array $data
*
* @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
*

Wyświetl plik

@ -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);

Wyświetl plik

@ -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
*

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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);

Wyświetl plik

@ -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);

Wyświetl plik

@ -109,6 +109,9 @@ class Person extends ACore implements IQueryRow, JsonSerializable {
/** @var string */
private $featured = '';
/** @var string */
private $avatar = '';
/** @var string */
private $header = '';
@ -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;
}

Wyświetl plik

@ -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'
];