protected function Adaptive::buildAdaptivePageList in Pagerer 8
Same name and namespace in other branches
- 8.2 src/Plugin/pagerer/Adaptive.php \Drupal\pagerer\Plugin\pagerer\Adaptive::buildAdaptivePageList()
Returns an array of pages using an adaptive logic.
Parameters
array $pages: Array of pages already enlisted, to prevent override.
int $l: Adaptive lock to left page.
int $r: Adaptive lock to right page.
int $x: Adaptive center lock for neighborhood.
Return value
array Render array of pages items, with a 'outer_page' key set to TRUE.
1 call to Adaptive::buildAdaptivePageList()
- Adaptive::buildPageList in src/
Plugin/ pagerer/ Adaptive.php - Return an array of pages.
File
- src/
Plugin/ pagerer/ Adaptive.php, line 200
Class
- Adaptive
- Pager style with links to pages following an adaptive logic.
Namespace
Drupal\pagerer\Plugin\pagererCode
protected function buildAdaptivePageList(array &$pages, $l, $r, $x) {
$current = $this->pager
->getCurrentPage();
$x = is_null($x) ? $current : $x;
// Space on the left of the holding marker.
$sl = $x - $l;
// Space on the right of the holding marker.
$sr = $r - $x;
// Half of the maximum space either side to calculate from.
$m = max($sl, $sr) / 2;
for ($i = 0; $i < 2; $i++) {
$off = intval($m * pow(0.5, $i));
// Pages on the left.
$p = $x - $off;
if ($p > $l and $p < $current and !isset($pages[$p]) and !(isset($pages[$p - 1]) or isset($pages[$p + 1]))) {
$pages[$p] = $this
->getPageItem($p - $current, $this
->getOption('progr_links'), TRUE);
$pages[$p]['outer_page'] = TRUE;
}
// Pages on the right.
$p = $x + $off;
if ($p < $r and $p > $current and !isset($pages[$p]) and !(isset($pages[$p - 1]) or isset($pages[$p + 1]))) {
$pages[$p] = $this
->getPageItem($p - $current, $this
->getOption('progr_links'), TRUE);
$pages[$p]['outer_page'] = TRUE;
}
}
return $pages;
}