* @param int $count - Count of each entity to search, Total returned could can be larger and not guaranteed.
* @return array[int, Collection];
*/
- public function searchEntities($searchString, $entityType = 'all', $page = 1, $count = 20)
+ public function searchEntities($searchString, $entityType = 'all', $page = 1, $count = 20, $action = 'view')
{
$terms = $this->parseSearchString($searchString);
$entityTypes = array_keys($this->entities);
if (!in_array($entityType, $entityTypes)) {
continue;
}
- $search = $this->searchEntityTable($terms, $entityType, $page, $count);
- $entityTotal = $this->searchEntityTable($terms, $entityType, $page, $count, true);
+ $search = $this->searchEntityTable($terms, $entityType, $page, $count, $action);
+ $entityTotal = $this->searchEntityTable($terms, $entityType, $page, $count, $action, true);
if ($entityTotal > $page * $count) {
$hasMore = true;
}
* @param string $entityType
* @param int $page
* @param int $count
+ * @param string $action
* @param bool $getCount Return the total count of the search
* @return \Illuminate\Database\Eloquent\Collection|int|static[]
*/
- public function searchEntityTable($terms, $entityType = 'page', $page = 1, $count = 20, $getCount = false)
+ public function searchEntityTable($terms, $entityType = 'page', $page = 1, $count = 20, $action = 'view', $getCount = false)
{
- $query = $this->buildEntitySearchQuery($terms, $entityType);
+ $query = $this->buildEntitySearchQuery($terms, $entityType, $action);
if ($getCount) {
return $query->count();
}
* Create a search query for an entity
* @param array $terms
* @param string $entityType
+ * @param string $action
* @return \Illuminate\Database\Eloquent\Builder
*/
- protected function buildEntitySearchQuery($terms, $entityType = 'page')
+ protected function buildEntitySearchQuery($terms, $entityType = 'page', $action = 'view')
{
$entity = $this->getEntity($entityType);
$entitySelect = $entity->newQuery();
}
}
- return $this->permissionService->enforceEntityRestrictions($entityType, $entitySelect, 'view');
+ return $this->permissionService->enforceEntityRestrictions($entityType, $entitySelect, $action);
}