Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/1575/head
Maxence Lange 2023-01-12 15:34:39 -01:00
rodzic f860167e81
commit f9e891876b
3 zmienionych plików z 46 dodań i 14 usunięć

Wyświetl plik

@ -30,7 +30,6 @@ declare(strict_types=1);
namespace OCA\Social\Search;
use OCA\Social\Tools\Traits\TArrayTools;
use Exception;
use OCA\Social\Exceptions\AccountDoesNotExistException;
use OCA\Social\Model\ActivityPub\Actor\Person;
@ -38,15 +37,16 @@ use OCA\Social\Service\AccountService;
use OCA\Social\Service\CacheActorService;
use OCA\Social\Service\ConfigService;
use OCA\Social\Service\FollowService;
use OCA\Social\Service\MiscService;
use OCA\Social\Service\SearchService;
use OCA\Social\Service\StreamService;
use OCA\Social\Tools\Traits\TArrayTools;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\Search\IProvider;
use OCP\Search\ISearchQuery;
use OCP\Search\SearchResult;
use Psr\Log\LoggerInterface;
/**
* Class UnifiedSearchProvider
@ -67,7 +67,8 @@ class UnifiedSearchProvider implements IProvider {
private AccountService $accountService;
private SearchService $searchService;
private ConfigService $configService;
private MiscService $miscService;
private LoggerInterface $logger;
private ?Person $viewer = null;
@ -82,12 +83,18 @@ class UnifiedSearchProvider implements IProvider {
* @param AccountService $accountService
* @param SearchService $searchService
* @param ConfigService $configService
* @param MiscService $miscService
* @param LoggerInterface $logger
*/
public function __construct(
IL10N $l10n, IURLGenerator $urlGenerator, StreamService $streamService, FollowService $followService,
CacheActorService $cacheActorService, AccountService $accountService, SearchService $searchService,
ConfigService $configService, MiscService $miscService
IL10N $l10n,
IURLGenerator $urlGenerator,
StreamService $streamService,
FollowService $followService,
CacheActorService $cacheActorService,
AccountService $accountService,
SearchService $searchService,
ConfigService $configService,
LoggerInterface $logger
) {
$this->l10n = $l10n;
$this->urlGenerator = $urlGenerator;
@ -97,7 +104,7 @@ class UnifiedSearchProvider implements IProvider {
$this->accountService = $accountService;
$this->searchService = $searchService;
$this->configService = $configService;
$this->miscService = $miscService;
$this->logger = $logger;
}
@ -140,11 +147,12 @@ class UnifiedSearchProvider implements IProvider {
$search = trim($query->getTerm());
$result = array_merge(
$this->convertAccounts($this->searchService->searchUri($search)),
$this->convertAccounts($this->searchService->searchAccounts($search)),
$this->convertHashtags($this->searchService->searchHashtags($search))
);
// $this->searchService->searchStreamContent($search)
// $this->searchService->searchStreamContent($search)
return SearchResult::paginated(
$this->l10n->t('Social'), $result, ($query->getCursor() ?? 0) + $query->getLimit()

Wyświetl plik

@ -152,7 +152,7 @@ class CacheActorService {
throw new InvalidResourceException();
}
if ($id !== $actor->getId()) {
if (parse_url($id, PHP_URL_HOST) !== parse_url($actor->getId(), PHP_URL_HOST)) {
throw new InvalidOriginException(
'CacheActorService::getFromId - id: ' . $id . ' - actorId: ' . $actor->getId()
);

Wyświetl plik

@ -45,10 +45,11 @@ class SearchService {
use TArrayTools;
public const SEARCH_ACCOUNTS = 1;
public const SEARCH_HASHTAGS = 2;
public const SEARCH_CONTENT = 4;
public const SEARCH_ALL = 7;
public const SEARCH_URI = 1;
public const SEARCH_ACCOUNTS = 2;
public const SEARCH_HASHTAGS = 4;
public const SEARCH_CONTENT = 8;
public const SEARCH_ALL = 15;
private CacheActorService $cacheActorService;
private HashtagService $hashtagService;
@ -77,6 +78,25 @@ class SearchService {
}
/**
* @param string $search
*
* @return Person[]
*/
public function searchUri(string $search): array {
$type = $this->getTypeFromSearch($search);
if ($search !== '' && $type & self::SEARCH_URI) {
try {
return [$this->cacheActorService->getFromId($search)];
} catch (Exception $e) {
}
}
return [];
}
/**
* @param string $search
*
@ -154,6 +174,10 @@ class SearchService {
return self::SEARCH_HASHTAGS;
default:
if (substr($search, 0, 4) === 'http') {
return self::SEARCH_URI;
}
return self::SEARCH_ALL;
}
}