include.getpage.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * @package getpage
  4. */
  5. function getpage_buildControls(& $modx, $properties) {
  6. $nav = array();
  7. $qs = !empty($properties['qs']) ? $properties['qs'] : array();
  8. $page = !empty($properties['page']) ? $properties['page'] : 1;
  9. $pageCount = !empty($properties['pageCount']) ? $properties['pageCount'] : 1;
  10. $pageLimit = $properties['pageLimit'];
  11. extract($properties, EXTR_SKIP);
  12. if ($pageCount > 1 && !empty($pageNavTpl)) {
  13. for ($i = 1; $i <= $pageCount; $i++) {
  14. if ($i == 1 && $i != $page && !empty($pageFirstTpl)) {
  15. $nav['first'] = getpage_makeUrl($modx, $properties, $i, $pageFirstTpl);
  16. if (!empty($pagePrevTpl) && ($page - 1) >= 1) {
  17. $nav['prev'] = getpage_makeUrl($modx, $properties, $page - 1, $pagePrevTpl);
  18. }
  19. }
  20. if (empty($pageLimit) || ($i >= $page - $pageLimit && $i <= $page + $pageLimit)) {
  21. if (!array_key_exists('pages', $nav)) $nav['pages'] = array();
  22. if ($i == $page) {
  23. $nav['pages'][$i] = getpage_makeUrl($modx, $properties, $i, $pageActiveTpl);
  24. } else {
  25. $nav['pages'][$i] = getpage_makeUrl($modx, $properties, $i, $pageNavTpl);
  26. }
  27. }
  28. if ($i == $pageCount && $i != $page && !empty($pageLastTpl)) {
  29. if (!empty($pageNextTpl) && ($page + 1) <= $pageCount) {
  30. $nav['next'] = getpage_makeUrl($modx, $properties, $page + 1, $pageNextTpl);
  31. }
  32. $nav['last'] = getpage_makeUrl($modx, $properties, $i, $pageLastTpl);
  33. }
  34. }
  35. $nav['pages'] = implode("\n", $nav['pages']);
  36. }
  37. return $nav;
  38. }
  39. function getpage_makeUrl(& $modx, $properties, $pageNo, $tpl) {
  40. $qs = $properties['qs'];
  41. if ($pageNo === 1) {
  42. unset($qs[$properties['pageVarKey']]);
  43. } else {
  44. $qs[$properties['pageVarKey']] = $pageNo;
  45. }
  46. $scheme = !empty($properties['pageNavScheme']) ? $properties['pageNavScheme'] : $modx->getOption('link_tag_scheme', $properties, -1);
  47. $properties['href'] = $modx->makeUrl($modx->resource->get('id'), '', $qs, $scheme);
  48. $properties['pageNo'] = $pageNo;
  49. $nav= $modx->newObject('modChunk')->process($properties, $tpl);
  50. return $nav;
  51. }