aboutsummaryrefslogtreecommitdiff
path: root/app/class
diff options
context:
space:
mode:
Diffstat (limited to 'app/class')
-rw-r--r--app/class/Controllerpage.php3
-rw-r--r--app/class/Modeldb.php7
-rw-r--r--app/class/Modelhome.php2
-rw-r--r--app/class/Modelpage.php3
-rw-r--r--app/class/Modelrender.php90
-rw-r--r--app/class/Page.php41
6 files changed, 76 insertions, 70 deletions
diff --git a/app/class/Controllerpage.php b/app/class/Controllerpage.php
index 92632fc..d646184 100644
--- a/app/class/Controllerpage.php
+++ b/app/class/Controllerpage.php
@@ -108,8 +108,7 @@ class Controllerpage extends Controller
$renderengine->render($page);
$page->setdaterender($now);
$page->setlinkfrom($renderengine->linkfrom());
- $page->setlinkto($renderengine->linkto());
-
+
return $page;
}
diff --git a/app/class/Modeldb.php b/app/class/Modeldb.php
index 92f0d22..953521f 100644
--- a/app/class/Modeldb.php
+++ b/app/class/Modeldb.php
@@ -33,7 +33,12 @@ class Modeldb extends Model
$this->repo = new Repository($repo, $this->database);
}
- public function list()
+ /**
+ * List every IDs of a database
+ *
+ * @return array of ID strings
+ */
+ public function list() : array
{
return $this->repo->getAllIds();
}
diff --git a/app/class/Modelhome.php b/app/class/Modelhome.php
index e3d60a3..943f4bd 100644
--- a/app/class/Modelhome.php
+++ b/app/class/Modelhome.php
@@ -45,7 +45,7 @@ class Modelhome extends Modelpage
* @param Opt $opt
* @param string $regex
*/
- public function table2(array $table, Opt $opt, string $regex, array $searchopt)
+ public function table2(array $table, Opt $opt, string $regex = "", array $searchopt = [])
{
diff --git a/app/class/Modelpage.php b/app/class/Modelpage.php
index 7a0facc..e40ac04 100644
--- a/app/class/Modelpage.php
+++ b/app/class/Modelpage.php
@@ -387,6 +387,9 @@ class Modelpage extends Modeldb
if($reset['author']) {
$page->setauthors([]);
}
+ if($reset['redirection']) {
+ $page->setredirection('');
+ }
if($reset['date']) {
$page->setdate($now);
}
diff --git a/app/class/Modelrender.php b/app/class/Modelrender.php
index e070f7d..6fc8932 100644
--- a/app/class/Modelrender.php
+++ b/app/class/Modelrender.php
@@ -10,6 +10,7 @@ class Modelrender extends Modelpage
protected $router;
/** @var Page */
protected $page;
+ /** @var array list of ID as strings */
protected $pagelist;
protected $linkfrom = [];
protected $sum = [];
@@ -25,7 +26,7 @@ class Modelrender extends Modelpage
parent::__construct();
$this->router = $router;
- $this->pagelist = $this->getlister();
+ $this->pagelist = $this->list();
if(Config::internallinkblank()) {
$this->internallinkblank = ' target="_blank" ';
@@ -51,7 +52,14 @@ class Modelrender extends Modelpage
}
- public function upage($id)
+ /**
+ * Generate page relative link for given page_id including basepath
+ *
+ * @param string $id given page ID
+ *
+ * @return string Relative URL
+ */
+ public function upage(string $id) : string
{
return $this->router->generate('pageread/', ['page' => $id]);
}
@@ -103,7 +111,6 @@ class Modelrender extends Modelpage
}
$body = $this->article($body);
$body = $this->automedialist($body);
- $body = $this->autotaglistupdate($body);
return $body;
}
@@ -181,7 +188,6 @@ class Modelrender extends Modelpage
$content = $this->article($element->content());
$content = $this->automedialist($content);
$content = $this->pagelist($content);
- $content = $this->autotaglistupdate($content);
$content = $this->date($content);
$content = $this->thumbnail($content);
if($element->autolink()) {
@@ -217,10 +223,6 @@ class Modelrender extends Modelpage
$tempaltecsspage = $this->get($this->page->template('array')['css']);
file_put_contents(Model::RENDER_DIR . $tempaltecsspage->id() . '.css', $tempaltecsspage->css());
}
- if (array_key_exists('quickcss', $this->page->template('array'))) {
- $tempaltequickcsspage = $this->get($this->page->template('array')['quickcss']);
- file_put_contents(Model::RENDER_DIR . $tempaltequickcsspage->id() . '.quick.css', $tempaltequickcsspage->quickcss());
- }
if (array_key_exists('javascript', $this->page->template('array'))) {
$templatejspage = $this->get($this->page->template('array')['javascript']);
file_put_contents(Model::RENDER_DIR . $templatejspage->id() . '.js', $templatejspage->javascript());
@@ -306,6 +308,16 @@ class Modelrender extends Modelpage
</script>
' . PHP_EOL;
}
+
+ if (!empty($this->page->redirection())) {
+ if (preg_match('%https?:\/\/\S*%', $this->page->redirection(), $out)) {
+ $url = $out[0];
+ $head .= PHP_EOL . '<meta http-equiv="refresh" content="' . $this->page->refresh() . '; URL=' . $url . '" />';
+ } elseif (in_array($this->page->redirection(), $this->pagelist)) {
+ $url = $this->upage($this->page->redirection());
+ $head .= PHP_EOL . '<meta http-equiv="refresh" content="' . $this->page->refresh() . '; URL=' . $url . '" />';
+ }
+ }
return $head;
@@ -535,50 +547,6 @@ class Modelrender extends Modelpage
}
-
- public function autotaglist($text)
- {
- $pattern = "/\%TAG:([a-z0-9_-]+)\%/";
- preg_match_all($pattern, $text, $out);
- return $out[1];
-
- }
-
- public function autotaglistupdate($text)
- {
- $taglist = $this->autotaglist($text);
- foreach ($taglist as $tag) {
- $li = [];
- foreach ($this->pagelist as $item) {
- if (in_array($tag, $item->tag('array'))) {
- $li[] = $item;
- }
-
- }
- $ul = '<ul class="taglist" id="' . $tag . '">' . PHP_EOL;
- $this->pagelistsort($li, 'date', -1);
- foreach ($li as $item) {
- if ($item->id() === $this->page->id()) {
- $actual = ' actualpage';
- } else {
- $actual = '';
- }
- $ul .= '<li><a href="' . $this->router->generate('pageread/', ['page' => $item->id()]) . '" title="' . $item->description() . '" class="internal' . $actual . '" '. $this->internallinkblank .' >' . $item->title() . '</a></li>' . PHP_EOL;
- }
- $ul .= '</ul>' . PHP_EOL;
-
-
- $text = str_replace('%TAG:' . $tag . '%', $ul, $text);
-
- $li = array_map(function ($item) {
- return $item->id();
- }, $li);
- $this->linkfrom = array_unique(array_merge($this->linkfrom, $li));
- }
- return $text;
- }
-
-
public function date(string $text)
{
$page = $this->page;
@@ -674,10 +642,12 @@ class Modelrender extends Modelpage
$modelhome = new Modelhome();
if(isset($matches)) {
+ $pagelist = $this->getlister();
+
foreach ($matches as $match) {
- $optlist = $modelhome->Optlistinit($this->pagelist);
+ $optlist = $modelhome->Optlistinit($pagelist);
$optlist->parsehydrate($match['options']);
- $table2 = $modelhome->table2($this->pagelist, $optlist);
+ $table2 = $modelhome->table2($pagelist, $optlist, '', []);
$content = '<ul class="pagelist">' . PHP_EOL ;
foreach ($table2 as $page ) {
@@ -720,18 +690,6 @@ class Modelrender extends Modelpage
return $linkfrom;
}
- public function linkto()
- {
- $linkto = [];
- foreach ($this->pagelist as $page) {
- if (in_array($this->page->id(), $page->linkfrom())) {
- $linkto[] = $page->id();
- }
- }
- return $linkto;
- }
-
-
}
diff --git a/app/class/Page.php b/app/class/Page.php
index c30352c..c57ecc4 100644
--- a/app/class/Page.php
+++ b/app/class/Page.php
@@ -44,6 +44,8 @@ class Page extends Dbitem
protected $editcount;
protected $editby;
protected $sleep;
+ protected $redirection;
+ protected $refresh;
const LEN = 255;
@@ -103,6 +105,9 @@ class Page extends Dbitem
$this->seteditcount(0);
$this->seteditby([]);
$this->setsleep(0);
+ $this->setredirection('');
+ $this->setrefresh(0);
+
}
public static function classvarlist()
@@ -383,6 +388,16 @@ class Page extends Dbitem
return $this->sleep;
}
+ public function redirection($type = 'string')
+ {
+ return $this->redirection;
+ }
+
+ public function refresh($type = 'int')
+ {
+ return $this->refresh;
+ }
+
@@ -707,6 +722,32 @@ class Page extends Dbitem
}
}
+ public function setredirection($redirection)
+ {
+ if(is_string($redirection) && strlen($redirection) <= 64) {
+ $redirection = strip_tags($redirection);
+ if(preg_match('%https?:\/\/\S*%', $redirection, $out)) {
+ $this->redirection = $out[0];
+ } else {
+ $redirection = idclean($redirection);
+ if ($redirection !== $this->id) {
+ $this->redirection = $redirection;
+ }
+ }
+ }
+ }
+
+ public function setrefresh($refresh)
+ {
+ $refresh = intval($refresh);
+ if($refresh > 180) {
+ $refresh = 180;
+ } elseif ($refresh < 0) {
+ $refresh = 0;
+ }
+ $this->refresh = $refresh;
+ }
+
// __________________________________ C O U N T E R S ______________________________