RecommendationQueryService
in package
Builds configured ORM queries and grid-processing option arrays for recommendation grids.
Centralises the query-construction and option-building logic shared by the main grid, member-submitted, and recs-for-member grid endpoints. The controller retains responsibility for authorization, view-variable assignment, and template rendering.
Tags
Table of Contents
Methods
- applyHiddenStateVisibility() : SelectQuery
- Apply hidden-state visibility constraints to a recommendations query.
- buildMainGridQuery() : SelectQuery, gridOptions: array}
- Build the base query and grid options for the main recommendations index.
- buildMemberSubmittedQuery() : SelectQuery, gridOptions: array}
- Build the base query and grid options for the member-submitted recommendations grid.
- buildRecsForMemberQuery() : SelectQuery, gridOptions: array}
- Build the base query and grid options for the recs-for-member grid.
- recommendationBulkSelectionConfig() : array<string, string>
- Return accessible labels for recommendation bulk selection controls.
- recommendationSelectFields() : array<int, string>|null
- Select high-traffic grid fields while skipping large text fields when hidden.
- shouldLoadDisplayColumn() : bool
- Determine whether a display-only association should be loaded.
Methods
applyHiddenStateVisibility()
Apply hidden-state visibility constraints to a recommendations query.
public
applyHiddenStateVisibility(SelectQuery $query, bool $canViewHidden) : SelectQuery
Parameters
- $query : SelectQuery
-
Recommendations query.
- $canViewHidden : bool
-
Whether hidden rows may be included.
Return values
SelectQuerybuildMainGridQuery()
Build the base query and grid options for the main recommendations index.
public
buildMainGridQuery(Table $recommendationsTable, bool $canEdit[, bool $includeNotes = true ][, array<int, string>|null $visibleColumns = null ]) : SelectQuery, gridOptions: array}
Parameters
- $recommendationsTable : Table
-
The Recommendations ORM table.
- $canEdit : bool
-
Whether the current user can edit recommendations (enables bulk actions).
- $includeNotes : bool = true
-
Whether notes relations should be loaded for list rendering.
- $visibleColumns : array<int, string>|null = null
-
Resolved visible columns, or null when all display data is required.
Return values
SelectQuery, gridOptions: array} —Base query and processDataverseGrid options.
buildMemberSubmittedQuery()
Build the base query and grid options for the member-submitted recommendations grid.
public
buildMemberSubmittedQuery(Table $recommendationsTable, int $memberId[, array<string|int, mixed>|null $visibleColumns = null ]) : SelectQuery, gridOptions: array}
Parameters
- $recommendationsTable : Table
-
The Recommendations ORM table.
- $memberId : int
-
The requester member ID to filter by.
- $visibleColumns : array<string|int, mixed>|null = null
Return values
SelectQuery, gridOptions: array} —Base query and processDataverseGrid options.
buildRecsForMemberQuery()
Build the base query and grid options for the recs-for-member grid.
public
buildRecsForMemberQuery(Table $recommendationsTable, int $memberId[, array<string|int, mixed>|null $visibleColumns = null ]) : SelectQuery, gridOptions: array}
Parameters
- $recommendationsTable : Table
-
The Recommendations ORM table.
- $memberId : int
-
The subject member ID to filter by.
- $visibleColumns : array<string|int, mixed>|null = null
Return values
SelectQuery, gridOptions: array} —Base query and processDataverseGrid options.
recommendationBulkSelectionConfig()
Return accessible labels for recommendation bulk selection controls.
private
recommendationBulkSelectionConfig() : array<string, string>
Return values
array<string, string>recommendationSelectFields()
Select high-traffic grid fields while skipping large text fields when hidden.
private
recommendationSelectFields(array<int, string>|null $visibleColumns) : array<int, string>|null
Parameters
- $visibleColumns : array<int, string>|null
-
Resolved visible columns; null means select all.
Return values
array<int, string>|nullshouldLoadDisplayColumn()
Determine whether a display-only association should be loaded.
private
shouldLoadDisplayColumn(string $columnKey, array<int, string>|null $visibleColumns) : bool
Parameters
- $columnKey : string
-
Grid column key backed by association data.
- $visibleColumns : array<int, string>|null
-
Resolved visible columns; null means load all.