summaryrefslogtreecommitdiffstats
path: root/lib/Service/AccountFinder.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Service/AccountFinder.php')
-rw-r--r--lib/Service/AccountFinder.php20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Service/AccountFinder.php b/lib/Service/AccountFinder.php
index 78e63552..49556808 100644
--- a/lib/Service/AccountFinder.php
+++ b/lib/Service/AccountFinder.php
@@ -9,8 +9,10 @@ namespace OCA\Social\Service;
use Doctrine\Common\Collections\Collection;
use OCA\Social\Entity\Account;
use OCA\Social\Entity\Follow;
+use OCA\Social\Entity\Instance;
use OCP\DB\ORM\IEntityManager;
use OCP\DB\ORM\IEntityRepository;
+use OCP\DB\ORM\NoResultException;
use OCP\IRequest;
use OCP\IUser;
@@ -27,10 +29,20 @@ class AccountFinder {
}
public function findRemote(string $userName, ?string $domain): ?Account {
- return $this->repository->findOneBy([
- 'domain' => $domain,
- 'userName' => $userName,
- ]);
+ if ($domain !== null) {
+ $instance = new Instance();
+ $instance->setDomain($domain);
+ return $this->entityManager->createQuery('SELECT a FROM \OCA\Social\Entity\Account a WHERE a.instance = :instance AND a.userName = :userName')
+ ->setParameters([
+ 'instance' => $instance,
+ 'userName' => $userName,
+ ])->getOneOrNullResult();
+ } else {
+ return $this->entityManager->createQuery('SELECT a FROM \OCA\Social\Entity\Account a WHERE a.instance is NULL AND a.userName = :userName')
+ ->setParameters([
+ 'userName' => $userName,
+ ])->getOneOrNullResult();
+ }
}
public function findLocal(string $userName): ?Account {