|
|
|
@ -391,6 +391,7 @@ class Pico |
|
|
|
|
|
|
|
|
|
$this->readPages(); |
|
|
|
|
$this->sortPages(); |
|
|
|
|
$this->discoverPageSiblings(); |
|
|
|
|
$this->discoverCurrentPage(); |
|
|
|
|
|
|
|
|
|
$this->triggerEvent('onPagesLoaded', array( |
|
|
|
@ -1237,8 +1238,11 @@ class Pico |
|
|
|
|
* | date_formatted | string | formatted date of the page | |
|
|
|
|
* | raw_content | string | raw, not yet parsed contents of the page | |
|
|
|
|
* | meta | string | parsed meta data of the page | |
|
|
|
|
* | previous_page | &array | reference to the previous page | |
|
|
|
|
* | next_page | &array | reference to the next page | |
|
|
|
|
* |
|
|
|
|
* @see Pico::sortPages() |
|
|
|
|
* @see Pico::discoverPageSiblings() |
|
|
|
|
* @see Pico::getPages() |
|
|
|
|
* @return void |
|
|
|
|
*/ |
|
|
|
@ -1372,11 +1376,47 @@ class Pico |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Walks through the list of all known pages and discovers the previous and |
|
|
|
|
* next page respectively |
|
|
|
|
* |
|
|
|
|
* @see Pico::readPages() |
|
|
|
|
* @see Pico::getPages() |
|
|
|
|
* @return void |
|
|
|
|
*/ |
|
|
|
|
protected function discoverPageSiblings() |
|
|
|
|
{ |
|
|
|
|
if (($this->getConfig('order_by') === 'date') && ($this->getConfig('order') === 'desc')) { |
|
|
|
|
$precedingPageKey = 'next_page'; |
|
|
|
|
$succeedingPageKey = 'previous_page'; |
|
|
|
|
} else { |
|
|
|
|
$precedingPageKey = 'previous_page'; |
|
|
|
|
$succeedingPageKey = 'next_page'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$precedingPageId = null; |
|
|
|
|
foreach ($this->pages as $id => &$pageData) { |
|
|
|
|
$pageData[$precedingPageKey] = null; |
|
|
|
|
$pageData[$succeedingPageKey] = null; |
|
|
|
|
|
|
|
|
|
if ($pageData['hidden']) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($precedingPageId !== null) { |
|
|
|
|
$precedingPageData = &$this->pages[$precedingPageId]; |
|
|
|
|
$pageData[$precedingPageKey] = &$precedingPageData; |
|
|
|
|
$precedingPageData[$succeedingPageKey] = &$pageData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$precedingPageId = $id; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns the list of known pages |
|
|
|
|
* |
|
|
|
|
* @see Pico::readPages() |
|
|
|
|
* @see Pico::sortPages() |
|
|
|
|
* @return array[]|null the data of all pages |
|
|
|
|
*/ |
|
|
|
|
public function getPages() |
|
|
|
@ -1385,8 +1425,8 @@ class Pico |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Walks through the list of known pages and discovers the requested page |
|
|
|
|
* as well as the previous and next page relative to it |
|
|
|
|
* Discovers the page data of the requested page as well as the previous |
|
|
|
|
* and next page relative to it |
|
|
|
|
* |
|
|
|
|
* @see Pico::getCurrentPage() |
|
|
|
|
* @see Pico::getPreviousPage() |
|
|
|
@ -1395,8 +1435,6 @@ class Pico |
|
|
|
|
*/ |
|
|
|
|
protected function discoverCurrentPage() |
|
|
|
|
{ |
|
|
|
|
$pageIds = array_keys($this->pages); |
|
|
|
|
|
|
|
|
|
$contentDir = $this->getConfig('content_dir'); |
|
|
|
|
$contentDirLength = strlen($contentDir); |
|
|
|
|
|
|
|
|
@ -1407,27 +1445,10 @@ class Pico |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$currentPageId = substr($this->requestFile, $contentDirLength, -strlen($this->getConfig('content_ext'))); |
|
|
|
|
$currentPageIndex = array_search($currentPageId, $pageIds); |
|
|
|
|
if ($currentPageIndex !== false) { |
|
|
|
|
if (isset($this->pages[$currentPageId])) { |
|
|
|
|
$this->currentPage = &$this->pages[$currentPageId]; |
|
|
|
|
|
|
|
|
|
if (($this->getConfig('order_by') === 'date') && ($this->getConfig('order') === 'desc')) { |
|
|
|
|
$previousPageOffset = 1; |
|
|
|
|
$nextPageOffset = -1; |
|
|
|
|
} else { |
|
|
|
|
$previousPageOffset = -1; |
|
|
|
|
$nextPageOffset = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (isset($pageIds[$currentPageIndex + $previousPageOffset])) { |
|
|
|
|
$previousPageId = $pageIds[$currentPageIndex + $previousPageOffset]; |
|
|
|
|
$this->previousPage = &$this->pages[$previousPageId]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (isset($pageIds[$currentPageIndex + $nextPageOffset])) { |
|
|
|
|
$nextPageId = $pageIds[$currentPageIndex + $nextPageOffset]; |
|
|
|
|
$this->nextPage = &$this->pages[$nextPageId]; |
|
|
|
|
} |
|
|
|
|
$this->previousPage = &$this->pages[$currentPageId]['previous_page']; |
|
|
|
|
$this->nextPage = &$this->pages[$currentPageId]['next_page']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|