git.shiar.nl
/
minimedit.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
15a408f
)
page: article method to find handler code
author
Mischa POSLAWSKY
<perl@shiar.org>
Tue, 4 Feb 2020 19:52:00 +0000
(20:52 +0100)
committer
Mischa POSLAWSKY
<perl@shiar.org>
Tue, 4 Feb 2020 21:38:21 +0000
(22:38 +0100)
article.inc.php
patch
|
blob
|
history
page.php
patch
|
blob
|
history
diff --git
a/article.inc.php
b/article.inc.php
index da1836890a7c096dfc77b48d18da2705ce791326..d8ddf77b990b374d25586da8a01501ad030d21b3 100644
(file)
--- a/
article.inc.php
+++ b/
article.inc.php
@@
-50,6
+50,30
@@
class ArchiveArticle
return $this->$col = $this->$col(); # run method and cache
}
return $this->$col = $this->$col(); # run method and cache
}
+ function handler()
+ {
+ $path = $this->link;
+ $this->path = '';
+ $this->restricted = FALSE;
+ while (TRUE) {
+ if (file_exists("$path/.private")) {
+ $this->restricted = $path;
+ }
+
+ if (file_exists("$path/index.php")) {
+ return $path;
+ }
+
+ $up = strrpos($path, '/');
+ $this->path = substr($path, $up) . $this->path;
+ $path = substr($path, 0, $up);
+ if ($up === FALSE) {
+ break;
+ }
+ }
+ return;
+ }
+
function safetitle()
{
return trim($this->meta['og:title'] ?? strip_tags($this->title));
function safetitle()
{
return trim($this->meta['og:title'] ?? strip_tags($this->title));
diff --git
a/page.php
b/page.php
index e23b3e23bce2a5abdc1e975d3108774d697407b9..f4d6057aceac1f7e5570636d30f094476222c188 100644
(file)
--- a/
page.php
+++ b/
page.php
@@
-122,38
+122,14
@@
$User = NULL;
include_once 'auth.inc.php';
$Edit = isset($_GET['edit']);
include_once 'auth.inc.php';
$Edit = isset($_GET['edit']);
-#
distinguish subpage Args from topmost Page script
+#
setup requested page
$Args = '';
$Page = preg_replace('/\?.*/', '', @$_SERVER['PATH_INFO'] ?: $_SERVER['REQUEST_URI']);
$Page = urldecode(trim($Page, '/')) ?: 'index';
$Args = '';
$Page = preg_replace('/\?.*/', '', @$_SERVER['PATH_INFO'] ?: $_SERVER['REQUEST_URI']);
$Page = urldecode(trim($Page, '/')) ?: 'index';
-while (TRUE) {
- if (file_exists("$Page/.private")) {
- # access restriction
- if (empty($User)) {
- http_response_code(303);
- $target = urlencode($_SERVER['REQUEST_URI']);
- header("Location: /login?goto=$target");
- exit;
- }
- $PageAccess = $Page;
- }
- if (file_exists("$Page/index.php")) {
- break;
- }
-
- $up = strrpos($Page, '/');
- $Args = substr($Page, $up) . $Args;
- $Page = substr($Page, 0, $up);
- if ($up === FALSE) {
- break;
- }
-}
-
-$staticpage = NULL;
-if (file_exists("$Page$Args.html")) {
- $staticpage = "$Page$Args.html";
+$staticpage = "$Page.html";
+if (file_exists($staticpage)) {
if (is_link($staticpage)) {
$target = preg_replace('/\.html$/', '', readlink($staticpage));
header("HTTP/1.1 302 Shorthand");
if (is_link($staticpage)) {
$target = preg_replace('/\.html$/', '', readlink($staticpage));
header("HTTP/1.1 302 Shorthand");
@@
-161,18
+137,28
@@
if (file_exists("$Page$Args.html")) {
exit;
}
}
exit;
}
}
-elseif (file_exists("$Page
$Args
/index.html")) {
- $staticpage = "$Page
$Args
/index.html";
+elseif (file_exists("$Page/index.html")) {
+ $staticpage = "$Page/index.html";
}
}
-elseif ($User and $User->admin("edit $Page$Args")) {
- $staticpage = (file_exists("$Page/template.inc.html") ? "$Page/template.inc.html" : 'template.inc.html');
-}
-
-# prepare page contents
require_once('article.inc.php');
$Article = new ArchiveArticle($staticpage);
require_once('article.inc.php');
$Article = new ArchiveArticle($staticpage);
+$Page = $Article->handler;
+$Args = $Article->path;
+
+if ($PageAccess = $Article->restricted) {
+ # access restriction
+ if (empty($User)) {
+ http_response_code(303);
+ $target = urlencode($Article->link);
+ header("Location: /login?goto=$target");
+ exit;
+ }
+}
+
+# prepare page contents
+
ob_start(); # page body
$Place = [
'user' => $User ? $User->login : '',
ob_start(); # page body
$Place = [
'user' => $User ? $User->login : '',
@@
-191,6
+177,9
@@
if (isset($Article->raw)) {
}
$Article->raw = '<div class="static">'."\n\n".$Article->raw."</div>\n\n";
}
}
$Article->raw = '<div class="static">'."\n\n".$Article->raw."</div>\n\n";
}
+elseif (!$Article->raw and $User and $User->admin("edit {$Article->link}")) {
+ $Article->raw(file_exists("$Page/template.inc.html") ? "$Page/template.inc.html" : 'template.inc.html');
+}
# output dynamic and/or static html
# output dynamic and/or static html