Heratio Framework API Reference

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
SimplePager

paginateActors()

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
SimplePager

paginateInformationObjects()

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
SimplePager

paginatePhysicalObjects()

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
SimplePager

paginateTerms()

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

Return values
SimplePager

        
On this page

Search results