109.cache.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php return '/**
  2. * @package getpage
  3. */
  4. $output = \'\';
  5. $properties =& $scriptProperties;
  6. $properties[\'page\'] = (isset($_GET[$properties[\'pageVarKey\']]) && ($page = intval($_GET[$properties[\'pageVarKey\']]))) ? $page : null;
  7. if ($properties[\'page\'] === null) {
  8. $properties[\'page\'] = (isset($_REQUEST[$properties[\'pageVarKey\']]) && ($page = intval($_REQUEST[$properties[\'pageVarKey\']]))) ? $page : 1;
  9. }
  10. $properties[\'limit\'] = (isset($_GET[\'limit\'])) ? intval($_GET[\'limit\']) : null;
  11. if ($properties[\'limit\'] === null) {
  12. $properties[\'limit\'] = (isset($_REQUEST[\'limit\'])) ? intval($_REQUEST[\'limit\']) : intval($limit);
  13. }
  14. $properties[\'offset\'] = (!empty($properties[\'limit\']) && !empty($properties[\'page\'])) ? ($properties[\'limit\'] * ($properties[\'page\'] - 1)) : 0;
  15. $properties[\'totalVar\'] = empty($totalVar) ? "total" : $totalVar;
  16. $properties[$properties[\'totalVar\']] = !empty($properties[$properties[\'totalVar\']]) && $total = intval($properties[$properties[\'totalVar\']]) ? $total : 0;
  17. $properties[\'pageOneLimit\'] = (!empty($pageOneLimit) && $pageOneLimit = intval($pageOneLimit)) ? $pageOneLimit : $properties[\'limit\'];
  18. $properties[\'actualLimit\'] = $properties[\'limit\'];
  19. $properties[\'pageLimit\'] = isset($pageLimit) && is_numeric($pageLimit) ? intval($pageLimit) : 5;
  20. $properties[\'element\'] = empty($element) ? \'\' : $element;
  21. $properties[\'elementClass\'] = empty($elementClass) ? \'modChunk\' : $elementClass;
  22. $properties[\'pageNavVar\'] = empty($pageNavVar) ? \'page.nav\' : $pageNavVar;
  23. $properties[\'pageNavTpl\'] = !isset($pageNavTpl) ? "<li[[+classes]]><a[[+classes]][[+title]] href=\\"[[+href]]\\">[[+pageNo]]</a></li>" : $pageNavTpl;
  24. $properties[\'pageNavOuterTpl\'] = !isset($pageNavOuterTpl) ? "[[+first]][[+prev]][[+pages]][[+next]][[+last]]" : $pageNavOuterTpl;
  25. $properties[\'pageActiveTpl\'] = !isset($pageActiveTpl) ? "<li[[+activeClasses:default=` class=\\"active\\"`]]><a[[+activeClasses:default=` class=\\"active\\"`]][[+title]] href=\\"[[+href]]\\">[[+pageNo]]</a></li>" : $pageActiveTpl;
  26. $properties[\'pageFirstTpl\'] = !isset($pageFirstTpl) ? "<li class=\\"control\\"><a[[+title]] href=\\"[[+href]]\\">First</a></li>" : $pageFirstTpl;
  27. $properties[\'pageLastTpl\'] = !isset($pageLastTpl) ? "<li class=\\"control\\"><a[[+title]] href=\\"[[+href]]\\">Last</a></li>" : $pageLastTpl;
  28. $properties[\'pagePrevTpl\'] = !isset($pagePrevTpl) ? "<li class=\\"control\\"><a[[+title]] href=\\"[[+href]]\\">&lt;&lt;</a></li>" : $pagePrevTpl;
  29. $properties[\'pageNextTpl\'] = !isset($pageNextTpl) ? "<li class=\\"control\\"><a[[+title]] href=\\"[[+href]]\\">&gt;&gt;</a></li>" : $pageNextTpl;
  30. $properties[\'toPlaceholder\'] = !empty($toPlaceholder) ? $toPlaceholder : \'\';
  31. $properties[\'cache\'] = isset($cache) ? (boolean) $cache : (boolean) $modx->getOption(\'cache_resource\', null, false);
  32. if (empty($cache_key)) $properties[xPDO::OPT_CACHE_KEY] = $modx->getOption(\'cache_resource_key\', null, \'resource\');
  33. if (empty($cache_handler)) $properties[xPDO::OPT_CACHE_HANDLER] = $modx->getOption(\'cache_resource_handler\', null, \'xPDOFileCache\');
  34. if (empty($cache_expires)) $properties[xPDO::OPT_CACHE_EXPIRES] = (integer) $modx->getOption(\'cache_resource_expires\', null, 0);
  35. if ($properties[\'page\'] == 1 && $properties[\'pageOneLimit\'] !== $properties[\'actualLimit\']) {
  36. $properties[\'limit\'] = $properties[\'pageOneLimit\'];
  37. }
  38. if ($properties[\'cache\']) {
  39. $properties[\'cachePageKey\'] = $modx->resource->getCacheKey() . \'/\' . $properties[\'page\'] . \'/\' . md5(http_build_query($modx->request->getParameters()) . http_build_query($scriptProperties));
  40. $properties[\'cacheOptions\'] = array(
  41. xPDO::OPT_CACHE_KEY => $properties[xPDO::OPT_CACHE_KEY],
  42. xPDO::OPT_CACHE_HANDLER => $properties[xPDO::OPT_CACHE_HANDLER],
  43. xPDO::OPT_CACHE_EXPIRES => $properties[xPDO::OPT_CACHE_EXPIRES],
  44. );
  45. }
  46. $cached = false;
  47. if ($properties[\'cache\']) {
  48. if ($modx->getCacheManager()) {
  49. $cached = $modx->cacheManager->get($properties[\'cachePageKey\'], $properties[\'cacheOptions\']);
  50. }
  51. }
  52. if (empty($cached) || !isset($cached[\'properties\']) || !isset($cached[\'output\'])) {
  53. $elementObj = $modx->getObject($properties[\'elementClass\'], array(\'name\' => $properties[\'element\']));
  54. if ($elementObj) {
  55. $elementObj->setCacheable(false);
  56. if (!empty($properties[\'toPlaceholder\'])) {
  57. $elementObj->process($properties);
  58. $output = $modx->getPlaceholder($properties[\'toPlaceholder\']);
  59. } else {
  60. $output = $elementObj->process($properties);
  61. }
  62. }
  63. include_once $modx->getOption(\'getpage.core_path\',$properties,$modx->getOption(\'core_path\', $properties, MODX_CORE_PATH) . \'components/getpage/\').\'include.getpage.php\';
  64. $qs = $modx->request->getParameters();
  65. $properties[\'qs\'] =& $qs;
  66. $totalSet = $modx->getPlaceholder($properties[\'totalVar\']);
  67. $properties[$properties[\'totalVar\']] = (($totalSet = intval($totalSet)) ? $totalSet : $properties[$properties[\'totalVar\']]);
  68. if (!empty($properties[$properties[\'totalVar\']]) && !empty($properties[\'actualLimit\'])) {
  69. if ($properties[\'pageOneLimit\'] !== $properties[\'actualLimit\']) {
  70. $adjustedTotal = $properties[$properties[\'totalVar\']] - $properties[\'pageOneLimit\'];
  71. $properties[\'pageCount\'] = $adjustedTotal > 0 ? ceil($adjustedTotal / $properties[\'actualLimit\']) + 1 : 1;
  72. } else {
  73. $properties[\'pageCount\'] = ceil($properties[$properties[\'totalVar\']] / $properties[\'actualLimit\']);
  74. }
  75. } else {
  76. $properties[\'pageCount\'] = 1;
  77. }
  78. if (empty($properties[$properties[\'totalVar\']]) || empty($properties[\'actualLimit\']) || $properties[$properties[\'totalVar\']] <= $properties[\'actualLimit\'] || ($properties[\'page\'] == 1 && $properties[$properties[\'totalVar\']] <= $properties[\'pageOneLimit\'])) {
  79. $properties[\'page\'] = 1;
  80. } else {
  81. $pageNav = getpage_buildControls($modx, $properties);
  82. $properties[$properties[\'pageNavVar\']] = $modx->newObject(\'modChunk\')->process(array_merge($properties, $pageNav), $properties[\'pageNavOuterTpl\']);
  83. if ($properties[\'page\'] > 1) {
  84. $qs[$properties[\'pageVarKey\']] = $properties[\'page\'];
  85. }
  86. }
  87. $properties[\'firstItem\'] = $properties[\'offset\'] + 1;
  88. $properties[\'lastItem\'] = ($properties[\'offset\'] + $properties[\'limit\']) < $totalSet ? ($properties[\'offset\'] + $properties[\'limit\']) : $totalSet;
  89. $properties[\'pageUrl\'] = $modx->makeUrl($modx->resource->get(\'id\'), \'\', $qs);
  90. if ($properties[\'cache\'] && $modx->getCacheManager()) {
  91. $cached = array(\'properties\' => $properties, \'output\' => $output);
  92. $modx->cacheManager->set($properties[\'cachePageKey\'], $cached, $properties[xPDO::OPT_CACHE_EXPIRES], $properties[\'cacheOptions\']);
  93. }
  94. } else {
  95. $properties = $cached[\'properties\'];
  96. $output = $cached[\'output\'];
  97. }
  98. $modx->setPlaceholders($properties, $properties[\'namespace\']);
  99. if (!empty($properties[\'toPlaceholder\'])) {
  100. $modx->setPlaceholder($properties[\'toPlaceholder\'], $output);
  101. $output = \'\';
  102. }
  103. return $output;
  104. return;
  105. ';