本文整理汇总了PHP中eZ\Publish\API\Repository\Repository::getSearchService方法的典型用法代码示例。如果您正苦于以下问题:PHP Repository::getSearchService方法的具体用法?PHP Repository::getSearchService怎么用?PHP Repository::getSearchService使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eZ\Publish\API\Repository\Repository
的用法示例。
在下文中一共展示了Repository::getSearchService方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: existsPlace
/**
* Returns true if an object exists under the given root with the given name.
* Returns false otherwise.
*
* @param int $root
* @param string $name
*
* @return bool
*/
public function existsPlace($root, $name)
{
$query = new Query();
$query->query = new Query\Criterion\LogicalAnd(array(new Query\Criterion\Field('name', Query\Criterion\Operator::EQ, $name), new Query\Criterion\ParentLocationId($root)));
$searchService = $this->apiRepository->getSearchService();
$searchResults = $searchService->findContent($query);
return $searchResults->totalCount > 0;
}
示例2: __construct
/**
* @param \eZ\Publish\API\Repository\Repository $repository
* @param ConfigResolverInterface|\Psr\Log\LoggerInterface $resolver
*/
public function __construct(Repository $repository, ConfigResolverInterface $resolver)
{
$this->repository = $repository;
$this->searchService = $this->repository->getSearchService();
$this->locationService = $this->repository->getLocationService();
$this->contentService = $this->repository->getContentService();
$this->languageService = $this->repository->getContentLanguageService();
$this->userService = $this->repository->getUserService();
$this->contentTypeService = $this->repository->getContentTypeService();
$this->configResolver = $resolver;
}
示例3: getLatestContent
/**
* Returns latest published content that is located under $pathString and matching $contentTypeIdentifier.
* The whole subtree will be passed through to find content.
*
* @param \eZ\Publish\API\Repository\Values\Content\Location $rootLocation Root location we want to start content search from.
* @param string[] $includeContentTypeIdentifiers Array of ContentType identifiers we want content to match.
* @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion Additional criterion for filtering.
* @param int|null $limit Max number of items to retrieve. If not provided, default limit will be used.
*
* @return \eZ\Publish\API\Repository\Values\Content\Content[]
*/
public function getLatestContent(Location $rootLocation, array $includeContentTypeIdentifiers = array(), Criterion $criterion = null, $limit = null)
{
$criteria = array(new Criterion\Subtree($rootLocation->pathString), new Criterion\Visibility(Criterion\Visibility::VISIBLE));
if ($includeContentTypeIdentifiers) {
$criteria[] = new Criterion\ContentTypeIdentifier($includeContentTypeIdentifiers);
}
if (!empty($criterion)) {
$criteria[] = $criterion;
}
$query = new Query(array('criterion' => new Criterion\LogicalAnd($criteria), 'sortClauses' => array(new SortClause\DatePublished(Query::SORT_DESC))));
$query->limit = $limit ?: $this->defaultMenuLimit;
return $this->searchHelper->buildListFromSearchResult($this->repository->getSearchService()->findContent($query));
}
示例4: getSearchService
/**
* Get SearchService
*
* @return \eZ\Publish\API\Repository\SearchService
*/
public function getSearchService()
{
if ($this->searchService !== null) {
return $this->searchService;
}
$this->searchService = new SearchService($this->repository->getSearchService(), $this->signalDispatcher);
return $this->searchService;
}
示例5: getSubElementLocation
/**
* Returns Location objects parent of the locationId provided
*
* Criterion can be passed as parameter to refine the search
*
* @param int $locationId
* @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion Additional criterion for filtering.
* @param int $limit
*
* @return \eZ\Publish\API\Repository\Values\Content\Location[] Location objects, indexed by their contentId.
*/
public function getSubElementLocation($locationId, Criterion $criterion = null, $limit = null)
{
$criteria = array(new Criterion\ParentLocationId($locationId), new Criterion\Visibility(Criterion\Visibility::VISIBLE));
if (!empty($criterion)) {
$criteria[] = $criterion;
}
$query = new LocationQuery(array('criterion' => new Criterion\LogicalAnd($criteria), 'sortClauses' => array(new SortClause\Location\Priority(LocationQuery::SORT_ASC))));
if ($limit != null) {
$query->limit = $limit;
}
$searchResult = $this->repository->getSearchService()->findLocations($query);
$list = array();
foreach ($searchResult->searchHits as $searchHit) {
$list[$searchHit->valueObject->id] = $searchHit->valueObject;
}
return $list;
}
示例6: __construct
public function __construct(Repository $repository, CategoryServiceInterface $categoryService, PostServiceInterface $postService)
{
$this->repository = $repository;
$this->categoryService = $categoryService;
$this->postService = $postService;
$this->searchService = $repository->getSearchService();
$this->contentService = $repository->getContentService();
$this->locationService = $repository->getLocationService();
$this->contentTypeService = $repository->getContentTypeService();
$this->userService = $repository->getUserService();
}
示例7: getRelatedContentCount
/**
* Returns the number of content objects related to $tag.
*
* @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If the current user is not allowed to read tags
* @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If the specified tag is not found
*
* @param \Netgen\TagsBundle\API\Repository\Values\Tags\Tag $tag
*
* @return int
*/
public function getRelatedContentCount(Tag $tag)
{
if ($this->hasAccess('tags', 'read') !== true) {
throw new UnauthorizedException('tags', 'read');
}
$spiTagInfo = $this->tagsHandler->loadTagInfo($tag->id);
$relatedContentIds = $this->tagsHandler->loadRelatedContentIds($spiTagInfo->id);
if (empty($relatedContentIds)) {
return 0;
}
$searchResult = $this->repository->getSearchService()->findContent(new Query(array('limit' => 0, 'filter' => new ContentId($relatedContentIds))));
return $searchResult->totalCount;
}
示例8: loadUsersOfUserGroup
/**
* Loads the users of a user group
*
* @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the authenticated user is not allowed to read the users or user group
*
* @param \eZ\Publish\API\Repository\Values\User\UserGroup $userGroup
* @param int $offset
* @param int $limit
*
* @return \eZ\Publish\API\Repository\Values\User\User[]
*/
public function loadUsersOfUserGroup(APIUserGroup $userGroup, $offset = 0, $limit = -1)
{
$loadedUserGroup = $this->loadUserGroup($userGroup->id);
if ($loadedUserGroup->getVersionInfo()->getContentInfo()->mainLocationId === null) {
return array();
}
$mainGroupLocation = $this->repository->getLocationService()->loadLocation($loadedUserGroup->getVersionInfo()->getContentInfo()->mainLocationId);
$searchQuery = new Query();
$searchQuery->filter = new CriterionLogicalAnd(array(new CriterionContentTypeId($this->settings['userClassID']), new CriterionParentLocationId($mainGroupLocation->id)));
$searchQuery->offset = $offset > 0 ? (int) $offset : 0;
$searchQuery->limit = $limit >= 1 ? (int) $limit : null;
$searchQuery->sortClauses = array($this->getSortClauseBySortField($mainGroupLocation->sortField, $mainGroupLocation->sortOrder));
$searchResult = $this->repository->getSearchService()->findContent($searchQuery, array());
$users = array();
foreach ($searchResult->searchHits as $resultItem) {
$spiUser = $this->userHandler->load($resultItem->valueObject->id);
$users[] = $this->buildDomainUserObject($spiUser, $resultItem->valueObject);
}
return $users;
}
示例9: loadUsersOfUserGroup
/**
* Loads the users of a user group.
*
* @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the authenticated user is not allowed to read the users or user group
*
* @param \eZ\Publish\API\Repository\Values\User\UserGroup $userGroup
* @param int $offset the start offset for paging
* @param int $limit the number of users returned
*
* @return \eZ\Publish\API\Repository\Values\User\User[]
*/
public function loadUsersOfUserGroup(APIUserGroup $userGroup, $offset = 0, $limit = 25)
{
$loadedUserGroup = $this->loadUserGroup($userGroup->id);
if ($loadedUserGroup->getVersionInfo()->getContentInfo()->mainLocationId === null) {
return array();
}
$mainGroupLocation = $this->repository->getLocationService()->loadLocation($loadedUserGroup->getVersionInfo()->getContentInfo()->mainLocationId);
$searchQuery = new LocationQuery();
$searchQuery->filter = new CriterionLogicalAnd(array(new CriterionContentTypeId($this->settings['userClassID']), new CriterionParentLocationId($mainGroupLocation->id)));
$searchQuery->offset = $offset;
$searchQuery->limit = $limit;
$searchQuery->performCount = false;
$searchQuery->sortClauses = $mainGroupLocation->getSortClauses();
$searchResult = $this->repository->getSearchService()->findLocations($searchQuery);
$users = array();
foreach ($searchResult->searchHits as $resultItem) {
$users[] = $this->buildDomainUserObject($this->userHandler->load($resultItem->valueObject->contentInfo->id), $this->repository->getContentService()->internalLoadContent($resultItem->valueObject->contentInfo->id));
}
return $users;
}
示例10: sortLocations
/**
* Returns SearchResult of the tested Locations for the given $sortClause.
*
* @param \eZ\Publish\API\Repository\Repository $repository
* @param \eZ\Publish\API\Repository\Values\Content\Query\SortClause $sortClause
*
* @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult
*/
protected function sortLocations(Repository $repository, SortClause $sortClause)
{
$this->checkLocationFieldSearchSupport();
$searchService = $repository->getSearchService();
$query = new LocationQuery(array('filter' => new Criterion\ContentTypeIdentifier('test-' . $this->getTypeName()), 'sortClauses' => array($sortClause)));
return $searchService->findLocations($query);
}
示例11: search
/**
* Searches $searchText in the search database.
*
* @param string $searchText Search term
* @param array $params Search parameters
* @param array $searchTypes Search types
*
* @return array
*/
public function search($searchText, $params = array(), $searchTypes = array())
{
$searchText = trim($searchText);
if (empty($searchText)) {
return array('SearchResult' => array(), 'SearchCount' => 0, 'StopWordArray' => array());
}
$doFullText = true;
$query = new LocationQuery();
$criteria = array();
if (isset($params['SearchDate']) && (int) $params['SearchDate'] > 0) {
$currentTimestamp = time();
$dateSearchType = (int) $params['SearchDate'];
$fromTimestamp = 0;
if ($dateSearchType === 1) {
// Last day
$fromTimestamp = $currentTimestamp - 86400;
} else {
if ($dateSearchType === 2) {
// Last week
$fromTimestamp = $currentTimestamp - 7 * 86400;
} else {
if ($dateSearchType === 3) {
// Last month
$fromTimestamp = $currentTimestamp - 30 * 86400;
} else {
if ($dateSearchType === 4) {
// Last three months
$fromTimestamp = $currentTimestamp - 3 * 30 * 86400;
} else {
if ($dateSearchType === 5) {
// Last year
$fromTimestamp = $currentTimestamp - 365 * 86400;
}
}
}
}
}
$criteria[] = new Criterion\DateMetadata(Criterion\DateMetadata::CREATED, Criterion\Operator::GTE, $fromTimestamp);
}
if (isset($params['SearchSectionID']) && (int) $params['SearchSectionID'] > 0) {
$criteria[] = new Criterion\SectionId((int) $params['SearchSectionID']);
}
if (isset($params['SearchContentClassID']) && (int) $params['SearchContentClassID'] > 0) {
$criteria[] = new Criterion\ContentTypeId((int) $params['SearchContentClassID']);
if (isset($params['SearchContentClassAttributeID']) && (int) $params['SearchContentClassAttributeID'] > 0) {
$classAttribute = eZContentClassAttribute::fetch($params['SearchContentClassAttributeID']);
if ($classAttribute instanceof eZContentClassAttribute) {
$criteria[] = new Criterion\Field($classAttribute->attribute('identifier'), Criterion\Operator::LIKE, $searchText);
$doFullText = false;
}
}
}
if (isset($params['SearchSubTreeArray']) && !empty($params['SearchSubTreeArray'])) {
$subTreeArrayCriteria = array();
foreach ($params['SearchSubTreeArray'] as $nodeId) {
$node = eZContentObjectTreeNode::fetch($nodeId);
$subTreeArrayCriteria[] = $node->attribute('path_string');
}
$criteria[] = new Criterion\Subtree($subTreeArrayCriteria);
}
if ($doFullText) {
$criteria[] = new Criterion\FullText($searchText);
}
$query->query = new Criterion\LogicalAnd($criteria);
$query->limit = isset($params['SearchLimit']) ? (int) $params['SearchLimit'] : 10;
$query->offset = isset($params['SearchOffset']) ? (int) $params['SearchOffset'] : 0;
$useLocationSearch = eZINI::instance('ezplatformsearch.ini')->variable('SearchSettings', 'UseLocationSearch') === 'true';
if ($useLocationSearch) {
$searchResult = $this->repository->getSearchService()->findLocations($query);
} else {
$searchResult = $this->repository->getSearchService()->findContentInfo($query);
}
$nodeIds = array();
foreach ($searchResult->searchHits as $searchHit) {
$nodeIds[] = $useLocationSearch ? $searchHit->valueObject->id : $searchHit->valueObject->mainLocationId;
}
$nodes = eZContentObjectTreeNode::fetch($nodeIds);
if ($nodes instanceof eZContentObjectTreeNode) {
$nodes = array($nodes);
} else {
if (!is_array($nodes)) {
$nodes = array();
}
}
return array('SearchResult' => $nodes, 'SearchCount' => $searchResult->totalCount, 'StopWordArray' => array());
}