/** * @return bool|Page */ public function getPreviousCollection() { $page = false; $app = Facade::getFacadeApplication(); $db = $app->make('database')->connection(); $cID = 1; $currentPage = Page::getCurrentPage(); while ($cID > 0) { switch ($this->orderBy) { case 'chrono_desc': $cID = $db->GetOne('select Pages.cID from Pages inner join CollectionVersions cv on Pages.cID = cv.cID where cvIsApproved = 1 and cvDatePublic < ? and cParentID = ? order by cvDatePublic desc', [$currentPage->getCollectionDatePublic(), $currentPage->getCollectionParentID()]); break; case 'chrono_asc': $cID = $db->GetOne('select Pages.cID from Pages inner join CollectionVersions cv on Pages.cID = cv.cID where cvIsApproved = 1 and cvDatePublic > ? and cParentID = ? order by cvDatePublic asc', [$currentPage->getCollectionDatePublic(), $currentPage->getCollectionParentID()]); break; case 'display_desc': $cID = $db->GetOne('select cID from Pages where cDisplayOrder > ? and cParentID = ? order by cDisplayOrder asc', [$currentPage->getCollectionDisplayOrder(), $currentPage->getCollectionParentID()]); break; case 'display_asc': default: $cID = $db->GetOne('select cID from Pages where cDisplayOrder < ? and cParentID = ? order by cDisplayOrder desc', [$currentPage->getCollectionDisplayOrder(), $currentPage->getCollectionParentID()]); break; } if ($cID > 0) { $page = Page::getByID($cID, 'RECENT'); $currentPage = $page; $cp = new Permissions($page); if ($cp->canRead() && $page->getAttribute('exclude_nav') != 1) { break; } else { $page = false; //avoid accidentally returning this $page if we're on last loop iteration } } } if (!is_object($page) && $this->loopSequence) { $c = Page::getCurrentPage(); $parent = Page::getByID($c->getCollectionParentID(), 'ACTIVE'); switch ($this->orderBy) { case 'chrono_desc': return $parent->getFirstChild('cvDatePublic desc'); break; case 'chrono_asc': return $parent->getFirstChild('cvDatePublic asc'); break; case 'display_desc': return $parent->getFirstChild('cDisplayOrder asc'); break; case 'display_asc': default: return $parent->getFirstChild('cDisplayOrder desc'); break; } } return $page; }