displays post with current user as author

Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/61/head
Maxence Lange 2018-11-28 09:39:31 -01:00
rodzic 15358d0e47
commit b36e56cee9
2 zmienionych plików z 38 dodań i 9 usunięć

Wyświetl plik

@ -307,13 +307,19 @@ class CoreRequestBuilder {
/**
* @param IQueryBuilder $qb
* @param string $recipient
* @param bool $asAuthor
*/
protected function limitToRecipient(IQueryBuilder &$qb, string $recipient) {
protected function limitToRecipient(
IQueryBuilder &$qb, string $recipient, bool $asAuthor = false
) {
$expr = $qb->expr();
$orX = $expr->orX();
$dbConn = $this->dbConnection;
$orX->add($expr->eq('attributed_to', $qb->createNamedParameter($recipient)));
if ($asAuthor === true) {
$orX->add($expr->eq('attributed_to', $qb->createNamedParameter($recipient)));
}
$orX->add($expr->eq('to', $qb->createNamedParameter($recipient)));
$orX->add(
$expr->like(
@ -373,6 +379,23 @@ class CoreRequestBuilder {
protected function limitToDBField(
IQueryBuilder &$qb, string $field, string $value, bool $cs = true, string $alias = ''
) {
$expr = $this->exprLimitToDBField($qb, $field, $value, $cs, $alias);
$qb->andWhere($expr);
}
/**
* @param IQueryBuilder $qb
* @param string $field
* @param string $value
* @param bool $cs
* @param string $alias
*
* @return string
*/
protected function exprLimitToDBField(
IQueryBuilder &$qb, string $field, string $value, bool $cs = true, string $alias = ''
): string {
$expr = $qb->expr();
$pf = '';
@ -382,12 +405,11 @@ class CoreRequestBuilder {
$field = $pf . $field;
if ($cs) {
$qb->andWhere($expr->eq($field, $qb->createNamedParameter($value)));
return $expr->eq($field, $qb->createNamedParameter($value));
} else {
$func = $qb->func();
$qb->andWhere(
$expr->eq($func->lower($field), $func->lower($qb->createNamedParameter($value)))
);
return $expr->eq($func->lower($field), $func->lower($qb->createNamedParameter($value)));
}
}

Wyświetl plik

@ -139,14 +139,18 @@ class NotesRequest extends NotesRequestBuilder {
/**
* @param string $actorId
* @param int $since
* @param int $limit
*
* @return array
*/
public function getHomeNotesForActorId(string $actorId, $since, $limit): array {
public function getHomeNotesForActorId(string $actorId, int $since = 0, int $limit = 5): array {
$qb = $this->getNotesSelectSql();
$this->rightJoinFollowing($qb);
$this->limitToActorId($qb, $actorId, 'f');
$qb->orWhere($this->exprLimitToDBField($qb, 'attributed_to', $actorId));
$this->limitPaginate($qb, $since, $limit);
$this->leftJoinCacheActors($qb, 'attributed_to');
@ -190,12 +194,15 @@ class NotesRequest extends NotesRequestBuilder {
/**
* @param string $actorId
* @param int $since
* @param int $limit
*
* @return array
*/
public function getDirectNotesForActorId(string $actorId, $since, $limit): array {
public function getDirectNotesForActorId(string $actorId, int $since = 0, int $limit = 5
): array {
$qb = $this->getNotesSelectSql();
$this->limitToRecipient($qb, $actorId);
$this->limitToRecipient($qb, $actorId, true);
$this->limitPaginate($qb, $since, $limit);
$this->leftJoinCacheActors($qb, 'attributed_to');