From 86d989a722bdd482e618f6aa71f6d6f556aa36bd Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sat, 23 Sep 2017 07:09:34 -0600 Subject: [PATCH] Added Page Collection filtering support --- CHANGELOG.md | 2 ++ system/src/Grav/Common/Page/Page.php | 35 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 935ef1fc1..928f3b073 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.3.4 ## xx/xx/2017 +1. [](#new) + * Added filter support for Page collections (routable/visible/type/access/etc.) 1. [](#improved) * Implemented `Composer\CaBundle` for SSL Certs [#1241](https://github.com/getgrav/grav/issues/1241) * Refactored the Assets sorting logic diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 77272e883..96411f7d9 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -2507,6 +2507,41 @@ class Page } } + // If a filter or filters are set, filter the collection... + if (isset($params['filter'])) { + foreach ((array)$params['filter'] as $type => $filter) { + switch ($type) { + case 'visible': + $collection->visible($filter); + break; + case 'non-visible': + $collection->nonVisible($filter); + break; + case 'modular': + $collection->modular($filter); + break; + case 'non-modular': + $collection->nonModular($filter); + break; + case 'routable': + $collection->routable($filter); + break; + case 'non-routable': + $collection->nonRoutable($filter); + break; + case 'type': + $collection->ofType($filter); + break; + case 'types': + $collection->ofOneOfTheseTypes($filter); + break; + case 'access': + $collection->ofOneOfTheseAccessLevels($filter); + break; + } + } + } + if (isset($params['dateRange'])) { $start = isset($params['dateRange']['start']) ? $params['dateRange']['start'] : 0; $end = isset($params['dateRange']['end']) ? $params['dateRange']['end'] : false;