Minor code refactoring
This commit is contained in:
parent
0d40259c06
commit
43705d0f76
1 changed files with 31 additions and 23 deletions
54
lib/Pico.php
54
lib/Pico.php
|
@ -657,8 +657,11 @@ class Pico
|
|||
*/
|
||||
protected function discoverRequestFile()
|
||||
{
|
||||
$contentDir = $this->getConfig('content_dir');
|
||||
$contentExt = $this->getConfig('content_ext');
|
||||
|
||||
if (empty($this->requestUrl)) {
|
||||
$this->requestFile = $this->getConfig('content_dir') . 'index' . $this->getConfig('content_ext');
|
||||
$this->requestFile = $contentDir . 'index' . $contentExt;
|
||||
} else {
|
||||
// prevent content_dir breakouts using malicious request URLs
|
||||
// we don't use realpath() here because we neither want to check for file existance
|
||||
|
@ -680,24 +683,24 @@ class Pico
|
|||
}
|
||||
|
||||
if (empty($requestFileParts)) {
|
||||
$this->requestFile = $this->getConfig('content_dir') . 'index' . $this->getConfig('content_ext');
|
||||
$this->requestFile = $contentDir . 'index' . $contentExt;
|
||||
return;
|
||||
}
|
||||
|
||||
// discover the content file to serve
|
||||
// Note: $requestFileParts neither contains a trailing nor a leading slash
|
||||
$this->requestFile = $this->getConfig('content_dir') . implode('/', $requestFileParts);
|
||||
$this->requestFile = $contentDir . implode('/', $requestFileParts);
|
||||
if (is_dir($this->requestFile)) {
|
||||
// if no index file is found, try a accordingly named file in the previous dir
|
||||
// if this file doesn't exist either, show the 404 page, but assume the index
|
||||
// file as being requested (maintains backward compatibility to Pico < 1.0)
|
||||
$indexFile = $this->requestFile . '/index' . $this->getConfig('content_ext');
|
||||
if (file_exists($indexFile) || !file_exists($this->requestFile . $this->getConfig('content_ext'))) {
|
||||
$indexFile = $this->requestFile . '/index' . $contentExt;
|
||||
if (file_exists($indexFile) || !file_exists($this->requestFile . $contentExt)) {
|
||||
$this->requestFile = $indexFile;
|
||||
return;
|
||||
}
|
||||
}
|
||||
$this->requestFile .= $this->getConfig('content_ext');
|
||||
$this->requestFile .= $contentExt;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -737,25 +740,26 @@ class Pico
|
|||
{
|
||||
$contentDir = $this->getConfig('content_dir');
|
||||
$contentDirLength = strlen($contentDir);
|
||||
$contentExt = $this->getConfig('content_ext');
|
||||
|
||||
if (substr($file, 0, $contentDirLength) === $contentDir) {
|
||||
$errorFileDir = substr($file, $contentDirLength);
|
||||
|
||||
while ($errorFileDir !== '.') {
|
||||
$errorFileDir = dirname($errorFileDir);
|
||||
$errorFile = $errorFileDir . '/404' . $this->getConfig('content_ext');
|
||||
$errorFile = $errorFileDir . '/404' . $contentExt;
|
||||
|
||||
if (file_exists($this->getConfig('content_dir') . $errorFile)) {
|
||||
return $this->loadFileContent($this->getConfig('content_dir') . $errorFile);
|
||||
if (file_exists($contentDir . $errorFile)) {
|
||||
return $this->loadFileContent($contentDir . $errorFile);
|
||||
}
|
||||
}
|
||||
} elseif (file_exists($this->getConfig('content_dir') . '404' . $this->getConfig('content_ext'))) {
|
||||
} elseif (file_exists($contentDir . '404' . $contentExt)) {
|
||||
// provided that the requested file is not in the regular
|
||||
// content directory, fallback to Pico's global `404.md`
|
||||
return $this->loadFileContent($this->getConfig('content_dir') . '404' . $this->getConfig('content_ext'));
|
||||
return $this->loadFileContent($contentDir . '404' . $contentExt);
|
||||
}
|
||||
|
||||
$errorFile = $this->getConfig('content_dir') . '404' . $this->getConfig('content_ext');
|
||||
$errorFile = $contentDir . '404' . $contentExt;
|
||||
throw new RuntimeException('Required "' . $errorFile . '" not found');
|
||||
}
|
||||
|
||||
|
@ -989,25 +993,30 @@ class Pico
|
|||
*/
|
||||
protected function readPages()
|
||||
{
|
||||
$contentDir = $this->getConfig('content_dir');
|
||||
$contentDirLength = strlen($contentDir);
|
||||
$contentExt = $this->getConfig('content_ext');
|
||||
$contentExtLength = strlen($contentExt);
|
||||
|
||||
$this->pages = array();
|
||||
$files = $this->getFiles($this->getConfig('content_dir'), $this->getConfig('content_ext'), Pico::SORT_NONE);
|
||||
$files = $this->getFiles($contentDir, $contentExt, Pico::SORT_NONE);
|
||||
foreach ($files as $i => $file) {
|
||||
// skip 404 page
|
||||
if (basename($file) === '404' . $this->getConfig('content_ext')) {
|
||||
if (basename($file) === '404' . $contentExt) {
|
||||
unset($files[$i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$id = substr($file, strlen($this->getConfig('content_dir')), -strlen($this->getConfig('content_ext')));
|
||||
$id = substr($file, $contentDirLength, -$contentExtLength);
|
||||
|
||||
// drop inaccessible pages (e.g. drop "sub.md" if "sub/index.md" exists)
|
||||
$conflictFile = $this->getConfig('content_dir') . $id . '/index' . $this->getConfig('content_ext');
|
||||
$conflictFile = $contentDir . $id . '/index' . $contentExt;
|
||||
if (in_array($conflictFile, $files, true)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$url = $this->getPageUrl($id);
|
||||
if ($file != $this->requestFile) {
|
||||
if ($file !== $this->requestFile) {
|
||||
$rawContent = file_get_contents($file);
|
||||
|
||||
$headers = $this->getMetaHeaders();
|
||||
|
@ -1126,8 +1135,7 @@ class Pico
|
|||
return;
|
||||
}
|
||||
|
||||
$contentExt = $this->getConfig('content_ext');
|
||||
$currentPageId = substr($this->requestFile, $contentDirLength, -strlen($contentExt));
|
||||
$currentPageId = substr($this->requestFile, $contentDirLength, -strlen($this->getConfig('content_ext')));
|
||||
$currentPageIndex = array_search($currentPageId, $pageIds);
|
||||
if ($currentPageIndex !== false) {
|
||||
$this->currentPage = &$this->pages[$currentPageId];
|
||||
|
@ -1287,7 +1295,7 @@ class Pico
|
|||
$protocol . "://" . $_SERVER['HTTP_HOST']
|
||||
. rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\') . '/';
|
||||
|
||||
return $this->getConfig('base_url');
|
||||
return $this->config['base_url'];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1303,7 +1311,7 @@ class Pico
|
|||
}
|
||||
|
||||
$this->config['rewrite_url'] = (isset($_SERVER['PICO_URL_REWRITING']) && $_SERVER['PICO_URL_REWRITING']);
|
||||
return $this->getConfig('rewrite_url');
|
||||
return $this->config['rewrite_url'];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1363,7 +1371,7 @@ class Pico
|
|||
foreach ($files as $file) {
|
||||
// exclude hidden files/dirs starting with a .; this also excludes the special dirs . and ..
|
||||
// exclude files ending with a ~ (vim/nano backup) or # (emacs backup)
|
||||
if ((substr($file, 0, 1) === '.') || in_array(substr($file, -1), array('~', '#'))) {
|
||||
if (($file[0] === '.') || in_array(substr($file, -1), array('~', '#'))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1394,7 +1402,7 @@ class Pico
|
|||
$path = $this->getRootDir() . $path;
|
||||
}
|
||||
} else {
|
||||
if (substr($path, 0, 1) !== '/') {
|
||||
if ($path[0] !== '/') {
|
||||
$path = $this->getRootDir() . $path;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue