diff options
author | vincent-peugnet <v.peugnet@free.fr> | 2019-01-23 01:26:57 +0100 |
---|---|---|
committer | vincent-peugnet <v.peugnet@free.fr> | 2019-01-23 01:26:57 +0100 |
commit | 0c9c2f57c36e4ca9cf0912d0c648bf577021c3d2 (patch) | |
tree | b75e0a61577e22120593966bff7e1f9587624451 /app/class | |
parent | 270a0f8798367dd24f3d640f19ff6e8554d22b60 (diff) | |
download | wcms-0c9c2f57c36e4ca9cf0912d0c648bf577021c3d2.tar.gz wcms-0c9c2f57c36e4ca9cf0912d0c648bf577021c3d2.zip |
reccursive render option
Diffstat (limited to 'app/class')
-rw-r--r-- | app/class/config.php | 11 | ||||
-rw-r--r-- | app/class/controllerart.php | 53 |
2 files changed, 47 insertions, 17 deletions
diff --git a/app/class/config.php b/app/class/config.php index 06251ca..39c8f12 100644 --- a/app/class/config.php +++ b/app/class/config.php @@ -18,6 +18,7 @@ abstract class Config protected static $analytics = ''; protected static $externallinkblank = true; protected static $internallinkblank = false; + protected static $reccursiverender = true; protected static $defaultprivacy = 0; @@ -145,6 +146,11 @@ abstract class Config return self::$internallinkblank; } + public static function reccursiverender() + { + return self::$reccursiverender; + } + public static function defaultprivacy() { return self::$defaultprivacy; @@ -250,6 +256,11 @@ abstract class Config self::$internallinkblank = boolval($internallinkblank); } + public static function setreccursiverender($reccursiverender) + { + self::$reccursiverender = boolval($reccursiverender); + } + public static function setdefaultprivacy($defaultprivacy) { $defaultprivacy = intval($defaultprivacy); diff --git a/app/class/controllerart.php b/app/class/controllerart.php index ace7e82..7f6bd34 100644 --- a/app/class/controllerart.php +++ b/app/class/controllerart.php @@ -5,7 +5,6 @@ class Controllerart extends Controller /** @var Art2 */ protected $art; protected $artmanager; - protected $renderengine; protected $fontmanager; protected $mediamanager; @@ -69,30 +68,50 @@ class Controllerart extends Controller $this->setart($id, 'artupdate'); if ($this->importart() && $this->user->iseditor()) { - $this->renderart(); + $this->art = $this->renderart($this->art); $this->artmanager->update($this->art); } $this->routedirect('artread/', ['art' => $this->art->id()]); } - public function renderart() + /** + * Render given page + * + * @var Art2 $art input + * + * @return Art2 rendered $art + */ + public function renderart(Art2 $art) : Art2 { $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - $this->renderengine = new Modelrender($this->router); + $renderengine = new Modelrender($this->router); - $body = $this->renderengine->renderbody($this->art); - $head = $this->renderengine->renderhead($this->art); - $this->art->setrenderbody($body); - $this->art->setrenderhead($head); - $this->art->setdaterender($now); - $this->art->setlinkfrom($this->renderengine->linkfrom()); - $this->art->setlinkto($this->renderengine->linkto()); + $body = $renderengine->renderbody($art); + $head = $renderengine->renderhead($art); + $art->setrenderbody($body); + $art->setrenderhead($head); + $art->setdaterender($now); + $art->setlinkfrom($renderengine->linkfrom()); + $art->setlinkto($renderengine->linkto()); - return ['head' => $head, 'body' => $body]; + return $art; } + public function reccursiverender(Art2 $art) + { + $relatedarts = array_filter(array_unique(array_merge($art->linkto(), $art->linkfrom()))); + $relatedarts = array_diff($relatedarts, [$art->id()]); + foreach ($relatedarts as $artid ) { + $art = $this->artmanager->get($artid); + if($art !== false) { + $art = $this->renderart($art); + $this->artmanager->update($art); + } + } + } + public function read($id) { @@ -106,10 +125,12 @@ class Controllerart extends Controller if ($artexist) { if ($this->art->daterender() < $this->art->datemodif()) { - $page = $this->renderart(); - } else { - $page = ['head' => $this->art->renderhead(), 'body' => $this->art->renderbody()]; + if(Config::reccursiverender()) { + $this->reccursiverender($this->art); + } + $this->art = $this->renderart($this->art); } + $page = ['head' => $this->art->renderhead(), 'body' => $this->art->renderbody()]; if ($canread) { $this->art->addaffcount(); if ($this->user->level() < 2) { @@ -122,8 +143,6 @@ class Controllerart extends Controller $this->showtemplate('read', $data); - - } public function edit($id) |