From b06f3ffff19c2a80dadbcd921ef931a48186f4d6 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Tue, 27 Nov 2018 22:36:01 -0100 Subject: [PATCH] cleaning Signed-off-by: Maxence Lange --- lib/Db/CoreRequestBuilder.php | 28 ++++++++++++------------- lib/Service/ActivityPub/NoteService.php | 5 ++++- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index 8e4a200b..104cbd5f 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -240,7 +240,7 @@ class CoreRequestBuilder { $date = new DateTime('now'); $date->sub(new DateInterval('PT' . $delay . 'M')); - $this->limitToDBFieldDateTime($qb, 'creation', $date); + $this->limitToDBFieldDateTime($qb, 'creation', $date, true); } @@ -256,7 +256,7 @@ class CoreRequestBuilder { $date = new DateTime('now'); $date->sub(new DateInterval('PT' . $delay . 'M')); - $this->limitToDBFieldDateTime($qb, 'caching', $date); + $this->limitToDBFieldDateTime($qb, 'caching', $date, true); } @@ -345,18 +345,11 @@ class CoreRequestBuilder { */ protected function limitPaginate(IQueryBuilder &$qb, int $since = 0, int $limit = 5) { if ($since > 0) { - $expr = $qb->expr(); - $dt = new \DateTime(); - $dt->setTimestamp($since); - // TODO: Pagination should use published date, once we can properly query the db for that - $qb->andWhere( - $expr->lt( - $this->defaultSelectAlias . '.creation', - $qb->createNamedParameter($dt, IQueryBuilder::PARAM_DATE), - IQueryBuilder::PARAM_DATE - ) - ); + $dTime = new \DateTime(); + $dTime->setTimestamp($since); + $this->limitToDBFieldDateTime($qb, 'published_time', $dTime); } + $qb->setMaxResults($limit); $qb->orderBy('creation', 'desc'); } @@ -430,15 +423,20 @@ class CoreRequestBuilder { * @param IQueryBuilder $qb * @param string $field * @param DateTime $date + * @param bool $orNull */ - protected function limitToDBFieldDateTime(IQueryBuilder &$qb, string $field, DateTime $date) { + protected function limitToDBFieldDateTime( + IQueryBuilder &$qb, string $field, DateTime $date, bool $orNull = false + ) { $expr = $qb->expr(); $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->defaultSelectAlias . '.' : ''; $field = $pf . $field; $orX = $expr->orX(); $orX->add($expr->lte($field, $qb->createNamedParameter($date, IQueryBuilder::PARAM_DATE))); - $orX->add($expr->isNull($field)); + if ($orNull === true) { + $orX->add($expr->isNull($field)); + } $qb->andWhere($orX); } diff --git a/lib/Service/ActivityPub/NoteService.php b/lib/Service/ActivityPub/NoteService.php index dadf2142..b0ba3d9e 100644 --- a/lib/Service/ActivityPub/NoteService.php +++ b/lib/Service/ActivityPub/NoteService.php @@ -310,9 +310,12 @@ class NoteService implements ICoreService { /** * @param Person $actor * + * @param int $since + * @param int $limit + * * @return Note[] */ - public function getHomeNotesForActor(Person $actor, $since, $limit): array { + public function getHomeNotesForActor(Person $actor, int $since = 0, int $limit = 5): array { return $this->notesRequest->getHomeNotesForActorId($actor->getId(), $since, $limit); }