PaginationService
in package
Standalone pagination service - replaces QubitPager + Propel Criteria.
Builds paginated results from Laravel Query Builder and returns SimplePager instances that are fully compatible with ahgThemeB5Plugin/_pager.php.
Usage: $pager = PaginationService::paginate('actor', [ 'join' => ['actor_i18n' => ['actor.id', '=', 'actor_i18n.id']], 'where' => [['actor_i18n.culture', '=', 'en']], 'search' => ['actor_i18n.authorized_form_of_name' => $query], 'orderBy' => ['object.updated_at' => 'desc'], 'select' => ['actor.id', 'actor_i18n.authorized_form_of_name as name'], 'slugJoin' => true, ], $page, $limit);
Table of Contents
Methods
- paginate() : SimplePager
- Paginate a query and return a SimplePager.
- paginateActors() : SimplePager
- Convenience: paginate actors (donors, rights holders, repositories, etc.)
- paginateInformationObjects() : SimplePager
- Convenience: paginate information objects.
- paginatePhysicalObjects() : SimplePager
- Convenience: paginate physical objects.
- paginateTerms() : SimplePager
- Convenience: paginate terms within a taxonomy.
Methods
paginate()
Paginate a query and return a SimplePager.
public
static paginate(string $table[, array<string|int, mixed> $options = [] ][, int $page = 1 ][, int $limit = 30 ]) : SimplePager
Parameters
- $table : string
-
Base table name
- $options : array<string|int, mixed> = []
-
Query options:
- join: array of table => [col1, op, col2] or table => closure
- leftJoin: array of table => [col1, op, col2] or table => closure
- where: array of [column, operator, value] conditions
- whereRaw: array of raw WHERE strings with optional bindings
- search: array of column => search_term (LIKE %term%)
- orderBy: array of column => direction
- select: array of column expressions
- slugJoin: bool - join slug table and add slug to results
- groupBy: array of columns to group by
- $page : int = 1
-
Current page (1-based)
- $limit : int = 30
-
Items per page
Return values
SimplePagerpaginateActors()
Convenience: paginate actors (donors, rights holders, repositories, etc.)
public
static paginateActors(string $actorTable, string $culture[, string|null $search = null ][, string $sort = 'updated_at_desc' ][, int $page = 1 ][, int $limit = 30 ]) : SimplePager
Builds the standard actor browse query: JOIN object ON actor_table.id = object.id JOIN actor ON actor_table.id = actor.id JOIN actor_i18n ON actor.id = actor_i18n.id AND culture = $culture LEFT JOIN slug ON actor_table.id = slug.object_id
Parameters
- $actorTable : string
-
Actor sub-table (e.g., 'donor', 'rights_holder', 'repository')
- $culture : string
-
i18n culture code (e.g., 'en')
- $search : string|null = null
-
Optional search string for authorized_form_of_name
- $sort : string = 'updated_at_desc'
-
Sort key: 'name_asc', 'name_desc', 'updated_at_desc', 'updated_at_asc', 'created_at_desc', 'identifier_asc', etc. Also accepts legacy keys: 'alphabetic', 'lastUpdated', 'identifier'
- $page : int = 1
-
Current page (1-based)
- $limit : int = 30
-
Items per page
Return values
SimplePagerpaginateInformationObjects()
Convenience: paginate information objects.
public
static paginateInformationObjects(string $culture[, string|null $search = null ][, int|null $parentId = null ][, int|null $levelId = null ][, string $sort = 'updated_at_desc' ][, int $page = 1 ][, int $limit = 30 ]) : SimplePager
Standard IO browse query with i18n join, optional parent/level filters.
Parameters
- $culture : string
-
i18n culture code
- $search : string|null = null
-
Optional search string for title
- $parentId : int|null = null
-
Filter by parent information_object.id
- $levelId : int|null = null
-
Filter by level_of_description_id
- $sort : string = 'updated_at_desc'
-
Sort key (e.g., 'title_asc', 'updated_at_desc', 'identifier_asc')
- $page : int = 1
-
Current page (1-based)
- $limit : int = 30
-
Items per page
Return values
SimplePagerpaginatePhysicalObjects()
Convenience: paginate physical objects.
public
static paginatePhysicalObjects(string $culture[, string|null $search = null ][, string $sort = 'name_asc' ][, int $page = 1 ][, int $limit = 30 ]) : SimplePager
Physical object browse with i18n join.
Parameters
- $culture : string
-
i18n culture code
- $search : string|null = null
-
Optional search string (matches name or location)
- $sort : string = 'name_asc'
-
Sort key (e.g., 'name_asc', 'name_desc', 'location_asc')
- $page : int = 1
-
Current page (1-based)
- $limit : int = 30
-
Items per page
Return values
SimplePagerpaginateTerms()
Convenience: paginate terms within a taxonomy.
public
static paginateTerms(int $taxonomyId, string $culture[, string|null $search = null ][, string $sort = 'name_asc' ][, int $page = 1 ][, int $limit = 30 ]) : SimplePager
Parameters
- $taxonomyId : int
-
Taxonomy ID to browse
- $culture : string
-
i18n culture code
- $search : string|null = null
-
Optional search string for term name
- $sort : string = 'name_asc'
-
Sort key (e.g., 'name_asc', 'name_desc', 'updated_at_desc')
- $page : int = 1
-
Current page (1-based)
- $limit : int = 30
-
Items per page