@@ -785,25 +785,31 @@ public function findOne($selector, $options = array()) {
785
785
$ options = array_merge ($ defaults , $ options );
786
786
$ items = $ this ->pages ->find ($ selector , $ options );
787
787
$ page = $ items ->first ();
788
-
789
- if ($ page && !$ page ->viewable (false )) {
788
+
789
+ if (isset ($ options ['findAll ' ]) && $ options ['findAll ' ] === true ) {
790
+ // page is always allowed through when findAll=true
791
+ } else if (isset ($ options ['include ' ]) && $ options ['include ' ] === 'all ' ) {
792
+ // page is always allowed through when include=all
793
+ } else if ($ page && !$ page ->viewable (false )) {
790
794
// page found but is not viewable, check if include mode was specified and would allow the page
795
+ $ include = isset ($ options ['include ' ]) ? strtolower ($ options ['include ' ]) : null ;
796
+ $ checkAccess = true ;
791
797
$ selectors = $ items ->getSelectors ();
792
798
if ($ selectors ) {
793
- $ include = $ selectors ->getSelectorByField ('include ' );
799
+ if ($ include === null ) {
800
+ $ include = $ selectors ->getSelectorByField ('include ' );
801
+ if ($ include ) $ include = strtolower ($ include ->value ());
802
+ }
794
803
$ checkAccess = $ selectors ->getSelectorByField ('check_access ' );
795
804
if (!$ checkAccess ) $ checkAccess = $ selectors ->getSelectorByField ('checkAccess ' );
796
805
$ checkAccess = $ checkAccess ? (bool ) $ checkAccess ->value () : true ;
797
- } else {
798
- $ include = null ;
799
- $ checkAccess = true ;
800
806
}
801
807
if (!$ include ) {
802
808
// there was no “include=” selector present
803
809
if ($ checkAccess === true ) $ page = null ;
804
- } else if ($ include-> value () === 'all ' ) {
810
+ } else if ($ include === 'all ' ) {
805
811
// allow $page to pass through with include=all mode
806
- } else if ($ include-> value () === 'unpublished ' && $ page ->hasStatus (Page::statusUnpublished ) && $ checkAccess ) {
812
+ } else if ($ include === 'unpublished ' && $ page ->isUnpublished ( ) && $ checkAccess ) {
807
813
// check if user would have access without unpublished status
808
814
$ status = $ page ->status ;
809
815
$ page ->setQuietly ('status ' , $ status & ~Page::statusUnpublished);
0 commit comments